本篇均以es5为主:
1,月份加减来推日期
// 根据所给月份往后推出日期
function getMonth(count) {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
// 当天日期
var getAlldays = (year, months) => {
var month = months + 1;
if (month <= 7) {
// 1-7月
if (month % 2 === 0) {
// 偶数月
if (month === 2) {
// 2月特殊
if ((year % 400 == 0) || ( year % 4 == 0 && year % 100 != 0)) {
// 闰年
var alldays = 29
} else {
var alldays = 28
}
} else {
var alldays = 30
}
} else {
// 奇数月
var alldays = 31
}
} else {
// 8-12月
if (month % 2 === 0) {
// 偶数月
var alldays = 31
} else {
var alldays = 30
}
}
return alldays
}; // 获取某年某月总天数
var fakeDate = new Date(year, month, 1); // 模拟数据,获得加完以后的月份
fakeDate.setMonth(month + count);
var newYear = fakeDate.getFullYear();
var newMonth = fakeDate.getMonth(); var requireAlldays = getAlldays(newYear, newMonth); // 加完月数以后的那个月的总天数 if (day > requireAlldays) {
// 如果当天所在日期超过加完以后月份的总天数,则推到下个月
var diff = day - requireAlldays;
return newYear + '-' + (newMonth + 2) + '-' + diff
} else {
return newYear + '-' + (newMonth + 1) + '-' + day
}
}
1