javascript Date.now()返回以微秒为单位而不是以毫秒为单位的值

a0zr77ik  于 2023-01-08  发布在  Java
关注(0)|答案(2)|浏览(345)

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
  ...
}
nhaq1z21

nhaq1z211#

当前纪元时间(AKA unix时间戳)1554637856是自1970年1月1日以来的***秒***数,而不是毫秒。
Date.now()milliseconds 为单位返回纪元时间,因此您需要秒:

if (endTime <= now / 1000) {
...
ki0zmccv

ki0zmccv2#

在撰写本文时,UNIX时代以来的时间 (以秒为单位) 大约为1 554 637 931,因此,以毫秒为单位的时间-JavaScript时间-大约为1 554 637 931 654
从那个纪元到现在已经过去了1.55千兆秒,你的JavaScript时间戳实际上是毫秒。

相关问题