为什么这个JavaScript date()很奇怪?

时间:2017-10-13 02:28:22

标签: javascript date

当我运行以下JavaScript代码时,它返回

new Date(2017, 5, 31)
// Sat Jul 01 2017 00:00:00 GMT+0530 (IST)

我知道在Date()中,月份为零,所以它会溢出到7月份。但是当我按照

运行时
new Date(2017, 12, 31)
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST) 

为什么日期为Jan 31而不是抛出异常?

new Date(2017, 13, 31)
// Sat Mar 03 2018 00:00:00 GMT+0530 (IST). Why Mar 03 instead of Mar 31?

由于

1 个答案:

答案 0 :(得分:5)

new Date(2017, 5, 31)
// Sat Jul 01 2017 00:00:00 GMT+0530 (IST)

6月只有30天,所以余额1天(31 - 30 = 1)溢出到7月1日。

new Date(2017, 12, 31)
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST)

同样,2017年只有12个月,所以余额1个月溢出成为2018年1月。巧合的是,1月也有31天,所以它变成2018年1月31日(31 - 31 = 0)。

new Date(2017, 13, 31)
// Sat Mar 03 2018 00:00:00 GMT+0530 (IST). Why Mar 03 instead of Mar 31?

按照这个逻辑,2017年只有12个月,所以余额2个月溢出成为2018年2月。

不幸的是,2018年的Febraury只有28天,所以余额3天(31 - 28 = 3)溢出到3月03日。