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日以来经过的 * 微秒 * 数。
这是怎么回事?
我在使用了几年之后才意识到这一点,因为刚才我在调试一些代码,这些代码进行了一个像so这样的检查,结果失败了:
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
...
}
2条答案
按热度按时间nhaq1z211#
当前纪元时间(AKA unix时间戳)
1554637856
是自1970年1月1日以来的***秒***数,而不是毫秒。Date.now()
以milliseconds 为单位返回纪元时间,因此您需要秒:ki0zmccv2#
在撰写本文时,UNIX时代以来的时间 (以秒为单位) 大约为
1 554 637 931
,因此,以毫秒为单位的时间-JavaScript时间-大约为1 554 637 931 654
。从那个纪元到现在已经过去了1.55千兆秒,你的JavaScript时间戳实际上是毫秒。