javascript - 在 Chrome 中解析字符串时,为什么 new Date() 对“YYYY-MM-DD”的处理方式不同?
问题描述
在将字符串解析为日期时,我在 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)
这是一个具有相同代码的代码笔。
为什么会这样?
编辑:这是 Chrome 73.0.3683.103。
Edit2:在节点 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)
解决方案
推荐阅读
- javascript - 如何从与 Javascript Traverson HAL 的链接中获取 JSON 对象
- google-cloud-vertex-ai - 如何删除在 Google Vertex AI 中创建的元存储
- java - @PostMapping 在 Postman 中工作但不在浏览器中
- r - 单击任何按钮时采取行动 Shiny R
- mcedit - 如何在 BASH 环境的文本编辑器上复制和粘贴代码字符串
- go - 执行命令行二进制并连续读取标准输出
- node.js - 使用带有 Next.js 的 Typescript 找不到具有相应类型声明的模块
- javascript - 当我将鼠标悬停在链接的部分周围时,我想更改超链接的类别
- graphql - 来自 useStaticQuery 的 Gatsby 结果未定义
- angular - Ngrx 选择返回未定义