热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JS在已知的日期基础之上加N个月

已知日期:2013-07-31加12个月3个月1个月得到相应的日期求大牛怎么写JS代码?
已知日期:2013-07-31  加12个月   3个月    1个月  得到相应的日期

求大牛怎么写JS代码?

11 个解决方案

#1



function dateAdd(date,strInterval, Number) {  //参数分别为日期对象,增加的类型,增加的数量 
                    var dtTmp = date;  
                    switch (strInterval) {   
    case 'second':
                        case 's' :
    return new Date(Date.parse(dtTmp) + (1000 * Number));  
case 'minute':
                        case 'n' :
    return new Date(Date.parse(dtTmp) + (60000 * Number));  
case 'hour':
                        case 'h' :
    return new Date(Date.parse(dtTmp) + (3600000 * Number)); 
                        case 'day':
                        case 'd' :
    return new Date(Date.parse(dtTmp) + (86400000 * Number)); 
                        case 'week':
                        case 'w' :
    return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'month':
                        case 'm' :
    return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                        case 'year':
case 'y' :
    return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                    }  
                }

#2


var yy = 2013, mm = 7, dd = 31;
alert(new Date( yy, mm-1+12, dd).toLocaleString());
alert(new Date( yy, mm-1+3, dd).toLocaleString());
alert(new Date( yy, mm-1+1, dd).toLocaleString());

#3


引用 1 楼 wzs_xyz 的回复:

function dateAdd(date,strInterval, Number) {  //参数分别为日期对象,增加的类型,增加的数量 
                    var dtTmp = date;  
                    switch (strInterval) {   
    case 'second':
                        case 's' :
    return new Date(Date.parse(dtTmp) + (1000 * Number));  
case 'minute':
                        case 'n' :
    return new Date(Date.parse(dtTmp) + (60000 * Number));  
case 'hour':
                        case 'h' :
    return new Date(Date.parse(dtTmp) + (3600000 * Number)); 
                        case 'day':
                        case 'd' :
    return new Date(Date.parse(dtTmp) + (86400000 * Number)); 
                        case 'week':
                        case 'w' :
    return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'month':
                        case 'm' :
    return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                        case 'year':
case 'y' :
    return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                    }  
                }

date = new Date();
alert(date,"month", 3);   你这个好像不对,还是我调用有问题?  打印的时间一直是本地时间

#4


引用 2 楼 jslang 的回复:
var yy = 2013, mm = 7, dd = 31;
alert(new Date( yy, mm-1+12, dd).toLocaleString());
alert(new Date( yy, mm-1+3, dd).toLocaleString());
alert(new Date( yy, mm-1+1, dd).toLocaleString());

这个明显不对,有些月分还有28天 

#5



function addMoth(d,m){
   var ds=d.split('-');
   d=new Date( ds[0],ds[1]-1+m,ds[2])
   return d.toLocaleDateString().match(/\d+/g).join('-')  
}
 alert(  addMoth('2013-07-31 ',3) )

#6


引用 3 楼 xiaopeng0803 的回复:
Quote: 引用 1 楼 wzs_xyz 的回复:


function dateAdd(date,strInterval, Number) {  //参数分别为日期对象,增加的类型,增加的数量 
                    var dtTmp = date;  
                    switch (strInterval) {   
    case 'second':
                        case 's' :
    return new Date(Date.parse(dtTmp) + (1000 * Number));  
case 'minute':
                        case 'n' :
    return new Date(Date.parse(dtTmp) + (60000 * Number));  
case 'hour':
                        case 'h' :
    return new Date(Date.parse(dtTmp) + (3600000 * Number)); 
                        case 'day':
                        case 'd' :
    return new Date(Date.parse(dtTmp) + (86400000 * Number)); 
                        case 'week':
                        case 'w' :
    return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'month':
                        case 'm' :
    return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                        case 'year':
case 'y' :
    return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                    }  
                }

date = new Date();
alert(date,"month", 3);   你这个好像不对,还是我调用有问题?  打印的时间一直是本地时间

OK,我调用错了

#7


var s= new date();
var mOnth=s.getMonth()+1;
可以获取月份,然后随便处理

#8


引用 6 楼 xiaopeng0803 的回复:
Quote: 引用 3 楼 xiaopeng0803 的回复:

Quote: 引用 1 楼 wzs_xyz 的回复:


function dateAdd(date,strInterval, Number) {  //参数分别为日期对象,增加的类型,增加的数量 
                    var dtTmp = date;  
                    switch (strInterval) {   
    case 'second':
                        case 's' :
    return new Date(Date.parse(dtTmp) + (1000 * Number));  
case 'minute':
                        case 'n' :
    return new Date(Date.parse(dtTmp) + (60000 * Number));  
case 'hour':
                        case 'h' :
    return new Date(Date.parse(dtTmp) + (3600000 * Number)); 
                        case 'day':
                        case 'd' :
    return new Date(Date.parse(dtTmp) + (86400000 * Number)); 
                        case 'week':
                        case 'w' :
    return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'month':
                        case 'm' :
    return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                        case 'year':
case 'y' :
    return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
                    }  
                }

date = new Date();
alert(date,"month", 3);   你这个好像不对,还是我调用有问题?  打印的时间一直是本地时间

OK,我调用错了

 这个也没有考虑到 有的月份31天,有些28天。

#9


引用 4 楼 xiaopeng0803 的回复:
Quote: 引用 2 楼 jslang 的回复:

var yy = 2013, mm = 7, dd = 31;
alert(new Date( yy, mm-1+12, dd).toLocaleString());
alert(new Date( yy, mm-1+3, dd).toLocaleString());
alert(new Date( yy, mm-1+1, dd).toLocaleString());

这个明显不对,有些月分还有28天 


那就要看你如何规定的了,多出来的天数是添加到下个月中,还是忽略掉?

#10


var date = new Date('2013-07-31');
date.setMonth(date.getMonth() + 1);

#11


这个应该是你要的了, 考虑到了天数问题

function addMoth(d,m){
   var ds=d.split('-'),_d=ds[2]-0;
   var nextM=new Date( ds[0],ds[1]-1+m+1, 0 );
   var max=nextM.getDate();
   d=new Date( ds[0],ds[1]-1+m,_d>max? max:_d );
   return d.toLocaleDateString().match(/\d+/g).join('-')
}
 alert(  addMoth('2013-07-31 ',7) )

推荐阅读
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 在处理大数相加的问题时,有许多方法可以借鉴。本文介绍了两种不同的函数式编程方法:一种是从网络上找到的经典实现,另一种是作者自行设计的创新方案。通过函数式编程的方式重新实现了这两种方法,其中经典实现简洁明了,而创新方案则在性能和可读性方面有所提升。这些方法不仅适用于大数相加,还可以扩展应用于其他数值计算场景。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 在使用 `useSelector` 选择器时,发现分派操作后状态未能实时更新。这可能是由于 React 组件的渲染机制或 Redux 的状态管理问题导致的。建议检查 `useSelector` 的依赖项和 `dispatch` 的调用时机,确保状态变化能够正确触发组件重新渲染。此外,可以考虑使用 `useEffect` 钩子来监听状态变化,以确保及时更新。 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Python内置模块详解:正则表达式re模块的应用与解析
    正则表达式是一种强大的文本处理工具,通过特定的字符序列来定义搜索模式。本文详细介绍了Python内置的`re`模块,探讨了其在字符串匹配、验证和提取中的应用。例如,可以通过正则表达式验证电子邮件地址、电话号码、QQ号、密码、URL和IP地址等。此外,文章还深入解析了`re`模块的各种函数和方法,提供了丰富的示例代码,帮助读者更好地理解和使用这一工具。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 寻找最长无重复字符的子字符串 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
author-avatar
李纯皓_922
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有