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',需求简单,实现也简单,以后如果碰见其他需求再继续完善吧,第一次在园子发文,感受一下!!!