/**
* 日期加月計算
* num:要加的月數
* sdate:要計算的日期,日期對象
*/
function addMonth(num,sdate) {
//日期不傳默認爲當前日期
var d = sdate || new Date();
//當前月份
var oldMonth = d.getMonth();
//當前幾號
var oldDay = d.getDate();
//每月多少天,平年
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//閏年二月爲29天
var fullYear = d.getFullYear();
if ((fullYear % 4 == 0 && fullYear % 100 != 0) || fullYear % 400 == 0) {
days[1] = 29;
}
//加月,設置月爲:當前月份+要加的月數
d.setMonth(oldMonth + num);
//計算月日
var newDay = d.getDate();
if (oldDay == days[oldMonth]) {
if(newDay != oldDay){
//設置新日期爲:新日期的上個月的最後一天
d.setDate(0);
}else{
//設置爲當月最後一天
d.setDate(1);
d.setMonth(d.getMonth()+1);
d.setDate(0);
}
}
//輸出年月日,月日不足10前面補0
var y = d.getFullYear();
var m = d.getMonth() + 1;
var dd = d.getDate();
if (m < 10) {
m = '0' + m;
}
if (dd < 10) {
dd = '0' + dd;
}
return y + "-" + m + "-" + dd;
}
示例:
addMonth(2,new Date("2015/02/28"));//2015-04-30
addMonth(12,new Date("2015/02/28"));//2016-02-29
addMonth(1,new Date("2015/01/31"));//2015-02-28