需要帮助来理解日期翻转逻辑

问题描述 投票:0回答:1

我试图理解将日期回滚到上个月的逻辑。

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)

javascript node.js datetime javascript-objects datetime-format
1个回答
0
投票

当您使用 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}`);

说明:

  • new Date(year,monthIndex,day):此构造函数创建一个新日期。
  • monthIndex 从零开始(0 表示一月,1 表示二月,等等)。
  • now.getFullYear():获取当前年份。 now.getMonth() - 1:获取他 上个月。
© www.soinside.com 2019 - 2024. All rights reserved.