gpt4 book ai didi

javascript - Date.parse(0) 返回 2000 年午夜,为什么?

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:16 25 4
gpt4 key购买 nike

当我尝试 Date.parse() 一个整数或字符串 0 时,它返回 946681200000,转换为以下日期:

2000 年 1 月 1 日星期六 00:00:00 GMT+0100 (CET)

为什么?

我会假设解析器将单个零解释为 2000 年,但规范没有说明单字符年份定义 - RFC 2822ISO 8601要求字符串中包含四个字符的年份。

我想更好地理解字符串“0”是如何被解析为一个日期的,为什么它被接受为一个有效的日期(它不应该是 NaN 或类似的吗?)以及为什么选择 2000 年而不是例如 1900 年。

更新

经过反复试验,我发现单个数字实际上在不同的数字范围内有不同的解释。

  • 0 - 12:2000 年的一个月
  • 13 - 31:NaN
  • 32 - 49:一年 + 2000,所有其他值设置为默认值
  • 50 - 99:一年 + 1950,所有其他值设置为默认值
  • 100 - ??:一年,所有其他值设置为默认值

最佳答案

the specs say nothing about single-character year definition

The spec说:

If the String does not conform to that format the function may fall back to any implementation-specific heuristics or implementation-specific date formats.

具体针对 V8,请参阅 this bug report使用单个号码调用时会产生不可预知的结果。您也可以直接阅读源代码( dateparser.ccdateparser.hdateparser-inl.h )。

关于javascript - Date.parse(0) 返回 2000 年午夜,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29074598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com