热门标签 | 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) )

推荐阅读
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • ASP.NET 进度条实现详解
    本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 本文探讨了在 APICloud 平台使用 execScript 方法时如何正确传递对象参数,并提供了详细的示例和解释。 ... [详细]
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
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社区 版权所有