我正在使用以下代码,其中月份是当前月份(我在哪里):
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/