我试图理解将日期回滚到上个月的逻辑。
const now = new Date();
console.log(`Initial Date: ${now}`); // Initial Date: Wed Oct 23 2024 00:01:56 GMT-0500 (CST)
now.setDate(-1);
console.log(`Updated Date: ${now}`); // Updated Date: Sun Sep 29 2024 00:01:56 GMT-0500 (CST)
这里,为什么
Updated Date
没有显示为Sep 30
?
我无法理解输出
Updated Date: Sun Sep 29 2024 00:01:56 GMT-0500 (CST)
当您使用 now.setDate(-1) 时,您实际上并没有将日期回滚到上个月。相反,您将日期设置为当月的第一天减去 1 天。
其工作原理如下:
1.初始日期:假设今天是 2024 年 10 月 23 日。 2.设置日期:当你调用 now.setDate(-1) 时,你告诉它把日期设置为 10 月 1 日(因为 Date 对象回滚到月初),然后减去 1 天,结果截止日期为 2024 年 9 月 29 日。
用它来获取
const now = new Date();
const lastDayOfPreviousMonth = new Date(now.getFullYear(), now.getMonth(), 0);
console.log(`Last Day of Previous Month: ${lastDayOfPreviousMonth}`);
说明: