一个月内产生奇怪结果的天数

时间:2017-07-02 02:50:06

标签: javascript

我创建了以下功能,该功能应该返回一个月内的天数,但我没有得到预期的结果。

export const getNumberOfDaysInMonth = (year, month) => {

    const myDate = new Date(year, month - 1, 0);
    return myDate.getDate();
}

我正在通过year = 2017month = 6。正如你所知,我从月份中减去1,因为据我所知,JS使用基于0的编号系统已有数月。

这将myDate设置为2017年5月31日,该函数返回31天。

如果我将公式更改为const myDate = new Date(year, month - 1, 1);,则会将日期设置为2017年6月1日,并将天数作为天数返回。

我可以使用switch语句来返回一个月内的天数,但这看起来很麻烦,甚至不会考虑到闰年等等。是否有一种优雅的方式来获取总天数在特定年份的特定月份?

例如,如果我通过year = 2016month = 2,我应该得到29而不是28。

1 个答案:

答案 0 :(得分:1)

做的时候

  

const myDate = new Date(年,月 - 1,0);

您不需要从月份中减去1。这是因为此处日期函数中的第三个参数表示月份的day,设置为0,实际上表示上个月的最后一天。所以就这样做

  

const myDate = new Date(年,月,0);

应该为您提供一个月内天数的预期结果。