在Chrome中解析字符串时,为什么新的Date()对“ YYYY-MM-DD”进行不同的处理?

时间:2019-04-15 01:55:25

标签: javascript date ecma

在将字符串解析为日期时,我在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)

0 个答案:

没有答案