【发布时间】:2021-01-10 19:52:05
【问题描述】:
在 Chrome 中,当字符串不包含年份时,为什么 JavaScript 默认为 2001?
t = new Date('Monday, Jan 11')
Thu Jan 11 2001 00:00:00 GMT+0000 (Greenwich Mean Time)
编辑: fwiw,这种行为也出现在 React Native 中
【问题讨论】:
-
它似乎是特定于 Chrome 的。 Firefox 返回无效日期
-
这是一种非标准的日期格式。因此,结果完全取决于实现——允许引擎使用任何解析模式或启发式方法来确定日期。我建议要么使用标准日期格式,它是 ISO 8601 的精简版,要么使用日期库来解析日期。
-
简短的回答是,以 ECMA-262 支持的格式以外的格式解析时间戳是依赖于实现的。您可能会得到预期日期、其他日期或无效日期,其中相同的字符串在不同的实现(甚至相同实现的版本)中产生不同的结果。因此强烈建议避免使用内置解析器。
-
谢谢大家的回答!同意这是浏览器特定的错误。 @RobG 你能重新打开这个问题吗?这与另一个问题并不完全相同。我希望了解 v8 中关于这个特定问题的实现。谢谢!
标签: javascript date