【转载】JS实现日期按月计算

业务场景:要求计算某个日期的几个月后或者几个月前的

日期按月计算函数,参数1是日期字段,参数2是月数,例如:计算日期A的两个月后日期addDate(A,2),计算日期A的一个月前日期addDate(A,-1),支持跨年。

function addDate(date1,num) {
	var date= new Array(); 
	date=date1.split("-");
	var year = parseInt(date[0]);
	var month = parseInt(date[1]);
	var day = parseInt(date[2]);
	
	var isendofmonth = isEndOfMonth(year,month,day);
	var tmpday = day;
	
	month += num;
	while(month>12){
		month -= 12;
		year++;
	}
	
	if(isendofmonth) day = changeEndOfDate(year,month,tmpday);
	console.log(year+'-'+month+'-'+day);
	month = changeMonthFormat(month);
	return year+'-'+month+'-'+day;
	
	
	
	function isLeapYear(year) {
		if (year % 4 == 0) {
			if (year % 100 == 0) {
				if (year % 400 == 0) return true; 
				else return false;
			} 
			else return true;
		} 
		else return false; 
	}

	
	function isBigMonth(month) {
		if (month == 2 || month == 4 || month == 6 || month == 9 || month == 11) return false;
		else return true;
	}
	
	
	function isEndOfMonth(year,month,day){
		if(isBigMonth(month)&&day==31 || !isBigMonth(month)&&month!=2&&day==30 || !isBigMonth(month)&&isLeapYear(year)&&month==2&&day==29 || !isBigMonth(month)&&!isLeapYear(year)&&month==2&&day==28) return true;
		else return false;
	}
	
	
	function getEndOfDate(year,month){
		if(!isLeapYear(year)&&month==2) return 28;
		if(isLeapYear(year)&&month==2) return 29;
		if(!isBigMonth(month)) return 30;
		if(isBigMonth(month)) return 31;
	}
	
	
	function changeEndOfDate(year,month,tmpday){
		var endofdate = getEndOfDate(year,month);
		if(endofdate>tmpday) return tmpday;
		else return endofdate;
	}
	
	
	function changeMonthFormat(month){
		if(month<=9){
			return '0'+month;
		}else{
			return month;
		}
	}
}

 

THE END
分享
二维码
打赏
海报
【转载】JS实现日期按月计算
业务场景:要求计算某个日期的几个月后或者几个月前的 日期按月计算函数,参数1是日期字段,参数2是月数,例如:计算日期A的两个月后日期addDate(A,2),计算日……
<<上一篇
下一篇>>