js 从指定年月日 按月跳转
/*
* desc 返回从某年某月某日指定增加n个月的日期
* params originalDate 原始年月日
* addMonth 增加月数
* return Date
*/
function getDelayDate(originalDate, addMonth) {
//不改变原始日期originalDate
var originDate = new Date(originalDate.getFullYear(),originalDate.getMonth(),originalDate.getDate());
originDate.setHours(originalDate.getHours());
originDate.setMinutes(originalDate.getMinutes());
originDate.setSeconds(originalDate.getSeconds());
//获取当前天数
var oldDate = originDate.getDate();
//获取增加后的月数
var newMonth = originDate.getMonth() + addMonth;
//开始跳转到指定月份,年份会自动增加
originDate.setMonth(newMonth);
//0-11间循环
var realMonth = newMonth % 12;
//跳转月份 不是 预期月份
if (originDate.getMonth() != realMonth) {
originDate.setMonth(realMonth);
//利用setDate(0)是返回上一个月的最大天数,获取真实月份最大天数
originDate.setDate(new Date(originDate.getFullYear(), originDate.getMonth() + 1, 0).getDate());
}
//保持日期的准确性 使之不会超过某月的最大天数
if (oldDate < originDate.getDate()) {
originDate.setDate(oldDate);
}
return originDate;
}
示例
var date = new Date();
date.setMonth(1);
date.setDate(29); //闰年2月29日
var originDate = getDelayDate(date, 12);
console.log("原始日期:" +date);
console.log("改变日期:" +originDate);
结果