我创建了以下功能,该功能应该返回一个月内的天数,但我没有得到预期的结果。
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日,并将天数作为天数返回。
我可以使用switch语句来返回一个月内的天数,但这看起来很麻烦,甚至不会考虑到闰年等等。是否有一种优雅的方式来获取总天数在特定年份的特定月份?
例如,如果我通过year = 2016
和month = 2
,我应该得到29而不是28。
答案 0 :(得分:1)
做的时候
const myDate = new Date(年,月 - 1,0);
您不需要从月份中减去1
。这是因为此处日期函数中的第三个参数表示月份的day
,设置为0
,实际上表示上个月的最后一天。所以就这样做
const myDate = new Date(年,月,0);
应该为您提供一个月内天数的预期结果。