为什么 JavaScript: new Date(year, month, 0).getDate() 返回一个月中的天数?

Dev*_*ija 3 javascript date

我知道这个小小的 javascript 代码var whatever = new Date(year, month, 0).getDate()返回特定年份的特定月份的天数。但我似乎不明白的是它背后的逻辑。

在我们提到年份和月份之后,零到底在做什么?请解释。

Dav*_*rtz 5

当您给出超出范围的参数时,将调整下一个较大的时间增量以使时间有效。所以:

> new Date(2016,2,1)
2016-03-01T08:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

所以如果我们指定 (2016,2,1),我们得到 3/1。因此,如果我们指定 (2016,2,0),我们将获得前一天,根据需要调整月份以获取有效内容,即上个月的最后一天。

> new Date(2016,2,0)
2016-02-29T08:00:00.000Z
Run Code Online (Sandbox Code Playgroud)