所以我有这个函数,它基本上接受一个整数的输入,并根据今天的日期,它可以追溯到那个“n”个月。例如,今天的日期是 2012 年 11 月 20 日。如果 'n' = 1,则返回 2012 年 10 月 20 日,依此类推。
我面临的问题是每个月份都在 2 月至 5 月之间,年份变量减一。例如,如果 n = 6,它应该返回 2012 年 5 月 20 日。相反,它返回 2011 年 5 月 20 日。
我认为这可能是闰年问题,但是当我用 n = 18 对其进行测试时,它返回 2010 年 5 月 20 日而不是 2011 年 5 月 20 日,并且 2011 年不是闰年。
有谁知道我可以在这里做些什么来避免这种情况?
lastNmonths = function(n) {
var date = new Date();
if (n <= 0)
console.log( [date.getFullYear(), date.getMonth() + 1 , date.getDate()].join('-'));
var years = Math.round(n / 12);
var months = n % 12;
if (years > 0)
date.setFullYear(date.getFullYear() - years);
if (months > 0) {
if (months >= date.getMonth()) {
date.setFullYear(date.getFullYear() );
months = 12 - months;
date.setMonth(date.getMonth() + months );
} else {
date.setMonth(date.getMonth() - months);
}
}
console.log( [date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-'));
};