在将字符串解析为日期时,我在Chrome中发现了一个有趣的怪癖。这些字符串以相同的方式解析:
new Date("2020 01 01")
=> Wed Jan 01 2020 00:00:00 GMT-0500 (GMT-05:00)
new Date("2020-01 01")
=> Wed Jan 01 2020 00:00:00 GMT-0500 (GMT-05:00)
new Date("2020 01-01")
=> Wed Jan 01 2020 00:00:00 GMT-0500 (GMT-05:00)
但不是这个,它又落后了几个小时:
new Date("2020-01-03")
=> Tue Dec 31 2019 19:00:00 GMT-0500 (GMT-05:00)
这里是codepen,具有相同的代码。
为什么会这样?
编辑:这是Chrome 73.0.3683.103。
Edit2 : 在Node LTS中,问题是相反的:
> new Date("2020 01 01")
2020-01-01T05:00:00.000Z
> new Date("2020-01 01")
2020-01-01T05:00:00.000Z
> new Date("2020 01-01")
2020-01-01T05:00:00.000Z
但是
> new Date("2020-01-01")
2020-01-01T00:00:00.000Z
在Safari 12.1中,前三个无效:
new Date("2020 01 01")
=> Invalid Date
new Date("2020-01 01")
=> Invalid Date
new Date("2020 01-01")
=> Invalid Date
最后一个也是错误的!
new Date("2020-01-01")
=> Tue Dec 31 2019 19:00:00 GMT-0500 (EST)