Date.now()
,根据文档,它应该返回Unix时间戳或大纪元时间,即自1970年1月1日以来已经过的毫秒数。
根据本网站(或任何其他有效的计算手段)的当前unix时间戳大约为1554637184。请注意,此值有10位数字。该值实际上以毫秒为单位。
但是,在所有三种浏览器(Chrome 73,Firefox 66.0.2和Edge 17.17134)中,Date.now()
返回的值都是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
...
}
答案 0 :(得分:4)
当前纪元时间(又称为unix时间戳)1554637856
是自1970年1月1日以来的秒数,而不是毫秒数。
Date.now()
返回纪元时间,以毫秒为单位,因此您需要
if (endTime <= now / 1000) {
...
答案 1 :(得分:0)
在撰写本文时,自UNIX时代大约为1 554 637 931
以来的时间以秒为单位。因此,以毫秒为单位的时间(JavaScript时间)约为1 554 637 931 654
。
距离纪元已过去1.55毫秒。实际上,您的JavaScript时间戳是毫秒。