gpt4 book ai didi

javascript - new Date() 返回无效日期,除非 * 为 1?

转载 作者:行者123 更新时间:2023-11-30 14:42:55 25 4
gpt4 key购买 nike

我有一个 JSON 对象返回内容片段发布日期的 unix 时间戳。使用 .toISOString() 时,此时间戳作为无效日期返回,除非我将它乘以 1。

举个例子

let timestamp = item[index].date; // returns string of "1584632700000"
let invalidDate = new Date(timestamp).toISOString(); // returns invalid Date
let validDate = new Date(timestamp * 1).toISOString(); // returns valid (and correct) Date

这背后的原因是什么?

最佳答案

这背后的原因是 new Date 解释其参数。

查看相关原型(prototype)我们看到:

new Date(value)

new Date(dateString)

value 是一个数字,dateString 是一个字符串。

这意味着函数在传递字符串和数字时表现不同。

value 被 MDN 描述为:

Integer value representing the number of milliseconds since January 1, 1970, 00:00:00 UTC, with leap seconds ignored (Unix Epoch; but consider that most Unix timestamp functions count in seconds).

dateString 为:

String value representing a date. The string should be in a format recognized by the Date.parse() method (IETF-compliant RFC 2822 timestamps and also a version of ISO8601).

由于您向它传递了一个字符串,它会使用第二种方法来尝试解析日期。

现在,为什么它与 * 1 一起工作?

* 1 以隐式方式将字符串转换为数字。

您也可以使用 parseInt 这样做有点冗长:

new Date(parseInt('1584632700000', 10))

关于javascript - new Date() 返回无效日期,除非 * 为 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384770/

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