JavaScript_日期加月計算

/**
 * 日期加月計算
 * 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

發佈了26 篇原創文章 · 獲贊 40 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章