gpt4 book ai didi

javascript - 使用 Date.parse 对有效日期的确定不一致

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:39 27 4
gpt4 key购买 nike

如果我尝试使用此语法解析日期:

var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '29'));

它将在 2013 年 3 月 1 日返回。

var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '30'));

它将在 2013 年 3 月 2 日返回。但是如果我返回

var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '33'));

它将返回无效日期

我的意思是,为什么不是所有这些日期都返回 Invalid Date

最佳答案

Date.parse 需要正确解析的唯一格式是 ISO 8601 的简化版。您可以在 ecma specification 中阅读有关确切格式的更多详细信息。 .

Date.parse 识别为日期的任何其他格式都是特定于实现的。您提到的格式不是上述标准的一部分,因此每个实现都可以给出他们想要的任何结果。

碰巧当你传入一个看起来比 31 大的日期时,解析器会认为它是一个无效的字符串,所以它会返回 NaN。由于月日不规律、闰年、秒数丢失、时区等各种问题,检查日期是否有效要困难得多,因此将所有这些逻辑都放在解析器中是不合理的。由于日期明显有效,它被转换为时间戳并由 Date.parse 返回,此时 new Date() 可以使用。

结论是,Date.parse 使用非标准格式是不可靠的,应尽可能避免。

关于javascript - 使用 Date.parse 对有效日期的确定不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20519783/

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