【发布时间】:2019-04-07 11:48:39
【问题描述】:
Date.now(),根据文档应该返回一个 Unix 时间戳或纪元时间,即自 1970 年 1 月 1 日以来已经过去的毫秒数。
根据本网站(或任何其他有效计算方式)的当前 unix 时间戳约为 1554637184。请注意,此值中有 10 位数字。这个值实际上是以毫秒为单位的。
但是,Date.now() 在 Chrome 73、Firefox 66.0.2 和 Edge 17.17134 这三种浏览器中返回的值是 1554637694364,观察到它是 13 位数字,因此,我推断它是自 1970 年 1 月 1 日以来经过的 微秒 数。
发生了什么事?
我在使用了多年之后才意识到这一点,因为刚才我正在调试一些代码,但这样的检查失败了:
let endTime = ...; // a time later than now expressed as a unix timestamp
let now = Date.now();
if (endTime <= now) {
// And it always came here, and that led me to this discovery
...
}
【问题讨论】:
-
这是什么 JavaScript 实现?
-
@ChaosPandion 它报告了我正在测试的 3 种浏览器的价值——Firefox、Chrome 和 Edge。我已经用版本号更新了问题。
-
This value is actually in milliseconds.不,这是几秒钟,根据您关心的任何有关 unix 时间戳的文档...I infer it is the number of microseconds您推断错误...自 1970 年以来一直存在1554637694364ms跨度> -
简单的手工计算显示1554637694364ms大约是49年。听起来不错。
-
准确地说是 49.26349577800594 年 @mbojko:p
标签: javascript browser