为什么这个JavaScript date()很奇怪?
问题描述:
当我运行下面的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?
感谢
答
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
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date解释了为什么 –
正如你所说的,月份基于零(0-11),所以'12'溢出到明年的一月份。 – Bergi