javascript - 在javascript中获取上个月/上个月的最后一天

标签 javascript date

我正在使用以下代码,其中月份是当前月份(我在哪里):

 lastDayOfLastMonth = month === 0 ? new Date(year - 1, 11, 0).getDate() : new Date(year, month, 0).getDate();

这个想法是,如果我在一年的第一个月,那么前一个月就是前一年的最后一个月。

如果我在 2018 年 1 月,则报告 2017 年 12 月的最后一天是 30,这不是真的,它是 31,但我不明白为什么。

最佳答案

Date 构造函数的日期部分不是从 0 开始索引的,而是一个月中的实际日期。在您的第一个条件中,new Date(year - 1, 11, 0).getDate(),您将首先将日期初始化为 2017 年 12 月 0 日。然后日期构造函数将其更正为 11 月 30 日, 2017.

如果您想要上个月的最后一天,您可以忽略三元运算符并执行以下操作,因为 Date 构造函数将进行必要的转换:

lastDayOfLastMonth = new Date(currentYear, currentMonth, 0).getDate();

请注意 currentMonth 仍然是 0 索引(即一月是第 0 个月,十二月是第 11 个月)

关于javascript - 在javascript中获取上个月/上个月的最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327268/

相关文章:

javascript - 为什么大多数语言对字符串文字使用双引号而不是单引号?

php - 使用 PHP 创建最近 30 天的数组

javascript - 自下而上动画 d3 图

javascript - 在不向 DOM 添加视频的情况下获取网络摄像头流分辨率?

javascript模板继承

Javascript 将 future 日期添加到 Qualtrics 中的嵌入式数据

date - java 8 从 zonedLocalTime 获取时区

php - 检查日期是否是周末 PHP

javascript - 如何转换 7 :30 AM time to javascript Date type?

javascript - `new` 没有 `delete` 在 Javascript 中的相同变量