2017-10-13 150 views
-2

当我运行下面的JavaScript代码,返回为什么这个JavaScript date()很奇怪?

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? 

感谢

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date解释了为什么 –

+0

正如你所说的,月份基于零(0-11),所以'12'溢出到明年的一月份。 – Bergi

回答

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

6月只有30天,因此平衡1天(31 - 30 = 1)溢出,成为七月01

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

同样的,2017年只有12个月,所以余额1个月溢出成为2018年1月。巧合的是,1月也有31天,所以它变成2017年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)溢出,成为三月03

相关问题