当我在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
作为数字是可以的。
2条答案
按热度按时间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不在可接受的范围内,因此它是一个无效的日期。v1uwarro2#
当你使用一个字符串时,
new Date()
会认为它是一个dateString而不是一个timestamp。"110"
是1:10的意思。它只是不能理解"1651214829629"
的dateString是什么。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date