根据天数计算结束日期
const getEndDateForDays = (date,day) => {
var newTime = Date.parse(date)
var newTimes = newTime + 3600000 * 24 * (day - 1);
var newDate = moment(new Date(newTimes)).format("YYYY-MM-DD");
return newDate
}
根据月数计算结束日期
const getEndDateForMonth = (date, num) => {
if (!date || !num) return;
var num1 = parseInt(num);
var d = new Date(date);
var thisMonth = d.getMonth() + 1;
var thisYear = d.getFullYear();
var thisDay = d.getDate();
var dateStr = "";
var addCount = thisMonth + num1;
var diffMonthCount = parseInt(addCount / 12);
if ((thisMonth + num1) === 12 * diffMonthCount) {
if ((thisMonth + num1) === 12) {
diffMonthCount = 0;
} else {
diffMonthCount = diffMonthCount - 1;
}
}
if (thisMonth + num1 > 12) {
thisYear += diffMonthCount;
}
thisMonth = (addCount) - 12 * diffMonthCount;
if (thisMonth < 10) {
thisMonth = "0" + thisMonth;
}
var thatDate = new Date(thisYear, thisMonth, 0);
var thatDay = thatDate.getDate();
let m1 = date.substring(5, 7);
if (thisDay === 30 || thisDay === 31 || (m1 === "02" && thisDay >= 28)) {
thisDay = thatDay;
if (date) {
let m2 = date.substring(5, 10);
if (m2 === "02-28" && num % 12 === 0) {
if (!(thisYear % (thisYear % 100 ? 4 : 400))) {
thisDay = "29";
}
}
}
dateStr = thisYear + "-" + thisMonth + "-" + thisDay;
} else {
dateStr = addMonth(date, num);
}
return dateStr;
}
const addMonth = (dtstr, n) => {
let s = dtstr.split("-");
let yy = parseInt(s[0]);
let mm = parseInt(s[1]);
let dd = parseInt(s[2]);
var num= mm + parseInt(n);
if(num/12 > 1){
yy += Math.floor(num/12)
mm = num % 12
}else{
mm += parseInt(n);
}
let newDate = new Date(yy,mm,0)
let days = newDate.getDate()
if(dd > days){
dd = days
}
return yy + "-" + mm + "-" + dd
}