【转载】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
0
二维码
打赏
海报
【转载】JS实现日期按月计算
业务场景:要求计算某个日期的几个月后或者几个月前的
日期按月计算函数,参数1是日期字段,参数2是月数,例如:计算日期A的两个月后日期addDate(A,2),计算日……
共有 0 条评论