当我运行以下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?
由于
答案 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日。