为什么这个JavaScript date()很奇怪?
当我运行下面的JavaScript代码时,它返回为什么这个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) //
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?