gpt4 book ai didi

javascript - 计算上个月

转载 作者:行者123 更新时间:2023-11-28 20:45:47 24 4
gpt4 key购买 nike

所以我有这个函数,它基本上接受一个整数的输入,并根据今天的日期,它可以追溯到“n”个月。例如,今天的日期是 2012 年 11 月 20 日。如果 'n' = 1,则返回 2012 年 10 月 20 日,依此类推。

我面临的问题是,每年二月到五月之间的每个月份,years 变量都会减一。例如,如果 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('-'));
};

最佳答案

您的方法不必要地复杂,并且必然容易出错。请改用 Date 实例的内置溢出控制:

var n = 6;
var d = new Date();
d.setMonth(d.getMonth() - n);

关于javascript - 计算上个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13479473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com