【发布时间】:2017-12-05 15:06:39
【问题描述】:
我创建了以下函数,它应该返回一个月中的天数,但我没有得到预期的结果。
export const getNumberOfDaysInMonth = (year, month) => {
const myDate = new Date(year, month - 1, 0);
return myDate.getDate();
}
我正在传递year = 2017 和month = 6。正如您将看到的,我从月份中减去 1,因为据我了解,JS 使用基于 0 的月份编号系统。
这会将 myDate 设置为 2017 年 5 月 31 日,函数返回 31 天。
如果我将公式更改为 const myDate = new Date(year, month - 1, 1);,它会将日期设置为 2017 年 6 月 1 日并返回 1 天作为天数。
我可以使用 switch 语句来返回一个月中的天数,但这似乎很麻烦,甚至不会考虑闰年等。有没有一种优雅的方法来获取总天数特定年份的特定月份?
例如,如果我通过 year = 2016 和 month = 2,我应该得到 29 而不是 28。
【问题讨论】:
-
像这样 -> jsfiddle.net/73d4vjx1 记住那一天
0是上个月的最后天,所以 2 月你真的想通过2月份,所以你得到了三月,但是因为你通过了0的日期,你得到了二月的最后一个日期。
标签: javascript