Chrome 为什么新日期(“1651214829629”)显示无效日期?

wnavrhmk  于 2022-12-06  发布在  Go
关注(0)|答案(2)|浏览(171)

当我在chrome控制台中运行这段代码时,它会显示以下内容:

>new Date("1651214829629")

Invalid Date

>new Date(1651214829629)

Fri Apr 29 2022 14:47:09 GMT+0800 (中国标准时间)

>new Date("110")

Wed Jan 01 0110 00:00:00 GMT+0805 (中国标准时间)

我不知道为什么"1651214829629"作为字符串是无效的日期,但是1651214829629作为数字是可以的。

aiqt4smr

aiqt4smr1#

就像Hao-Jung Hsieh说的,如果你给予new Date()一个字符串,它会把它解释成一个dateString,而不是一个时间戳。为了解析一个dateString,new Date()会调用Date.parse(),在这里的ECMAScript文档中有详细的描述。Date.parse()会首先根据日期时间字符串格式来解析dateString。日期时间字符串格式说,如果你只给一个数字,该数字将被解释为年份,通常在0-9999(如ISO 8601所定义)的范围内,但ECMAScript提供了一个扩展来支持此范围之外的年份,扩展年份部分对此进行了详细说明。通过此扩展,年份可以在-273,790到273,790的范围内。
因此,当您提供run new Date("1651214829629")时,Chrome会将1651214829629解释为年份。1651214829629不在可接受的范围内,因此它是一个无效的日期。

v1uwarro

v1uwarro2#

当你使用一个字符串时,new Date()会认为它是一个dateString而不是一个timestamp。"110"是1:10的意思。它只是不能理解"1651214829629"的dateString是什么。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

相关问题