所以我有這個函數,基本上需要輸入一個整數,並基於今天的日期,它回到'n'個月。因此,例如今天的日期是2012年11月20日。如果'n'= 1,那麼它將返回2012年10月20日,依此類推。上個月計算
我面臨的問題是萬季月份在2月至5月之間,年份變量減去1。例如,如果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('-'));
};
您應該可以簡單地使用'setMonth',它將爲您調整年份。 'date.setMonth(date.getMonth() - 12)'將在12個月前。 – Shmiddty