Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个JavaScript date()很奇怪?_Javascript_Date - Fatal编程技术网

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

为什么这个JavaScript date()很奇怪?,javascript,date,Javascript,Date,当我运行下面的JavaScript代码时,它返回 new Date(2017, 5, 31) // Sat Jul 01 2017 00:00:00 GMT+0530 (IST) 在这里,我知道月份在Date()中是以零为基础的,所以它会溢出到七月。但是当我跟着你跑的时候 new Date(2017, 12, 31) // Wed Jan 31 2018 00:00:00 GMT+0530 (IST) 为什么日期是1月31日而不是抛出异常 new Date(2017, 13, 31) //

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

new Date(2017, 5, 31)
// Sat Jul 01 2017 00:00:00 GMT+0530 (IST)
在这里,我知道月份在
Date()
中是以零为基础的,所以它会溢出到七月。但是当我跟着你跑的时候

new Date(2017, 12, 31)
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST) 
为什么日期是1月31日而不是抛出异常

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

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

按照这一逻辑,2017年只有12个月,因此剩余的2个月将成为2018年2月


不幸的是,2018年2月只有28天,因此剩余的3天(
31-28=3
)将溢出到3月3日。

解释了为什么您所说的月份是零基的(0-11),所以
12
溢出到明年1月。
new Date(2017, 12, 31)
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST)
new Date(2017, 13, 31)
// Sat Mar 03 2018 00:00:00 GMT+0530 (IST). Why Mar 03 instead of Mar 31?