js 自定义addMonth方法

最近项目中遇到一个需求,需要生成当前日期的下N个月的日期,方法类似C#中的AddMonth,在js中没有找到相关实现,所以自己动手写了一个简单的脚本,直接上代码,欢迎大家质疑讨论,谢谢!

 

/*
* date:当前日期,格式:yyyy-MM-dd(如:2011-09-26 2011-9-9)
* months:要添加的月数
* return:返回结果,格式:yyyy-MM-dd
*/
function addMonth(date, months) {
var datearr = date.split("-");
var y = parseInt(datearr[0]);
var m = parseInt(datearr[1][0] == 0 ? datearr[1][1] : datearr[1]) - 1;
var d = parseInt(datearr[2][0] == 0 ? datearr[2][1] : datearr[2]);

y += Math.floor((m + months) / 12); //计算年
m = Math.floor((m + months) % 12) + 1; //计算月
var d_max = new Date(y + "/" + (m + 1) + "/0").getDate(); //获取计算后的月的最大天数
if (d > d_max) {
d = d_max;
}

return (y + "-" + (m < 10 ? ("0" + m) : m) + "-" + (d < 10 ? ("0" + d) : d));
}

需求很简单,只要处理一下特殊问题,比如addMonth('2011-12-01',1)=>'2012-01-01',addMonth('2011-01-31,1)=>'2011-02-28',addMonth('2008-01-31',1)=>'2008-02-29',需求简单,实现也简单,以后如果碰见其他需求再继续完善吧,第一次在园子发文,感受一下!!!

转载于:https://www.cnblogs.com/hawkzyn/archive/2011/09/26/2191961.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值