← 返回首页
Date.now() - JavaScript | MDN

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Date.now()

基线 广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

Date.now() 方法返回自 1970 年 1 月 1 日 00:00:00 (UTC) 到当前时间的毫秒数。

本文内容

尝试一下

// This example takes 2 seconds to run const start = Date.now(); console.log("starting timer..."); // Expected output: "starting timer..." setTimeout(() => { const millis = Date.now() - start; console.log(`seconds elapsed = ${Math.floor(millis / 1000)}`); // Expected output: "seconds elapsed = 2" }, 2000);

语法

var timeInMs = Date.now();

返回值

一个 Number,表示自 UNIX 纪元开始(1970 年 1 月 1 日 00:00:00 (UTC))到当前时间的毫秒数。

描述

因为 now() 是 Date 的一个静态函数,所以必须以 Date.now() 的形式来使用。

时间精度被降低

为了提供针对定时攻击和指纹追踪的保护,Date.now() 的精度可能会根据浏览器的高级设置项目而被取整。 在 Firefox 中,默认启用 privacy.reduceTimerPrecision 设置项,在 Firefox 59 中,默认被取整至 20 微秒;在 Firefox 60 中,则被取整至 2 毫秒。

js
// reduced time precision (2ms) in Firefox 60 Date.now(); // 1519211809934 // 1519211810362 // 1519211811670 // ... // reduced time precision with `privacy.resistFingerprinting` enabled Date.now(); // 1519129853500 // 1519129858900 // 1519129864400 // ...

在 Firefox 中,还可以通过启用 privacy.resistFingerprinting 来进一步降低精度。启用后,精度将为 100 毫秒或者 privacy.resistFingerprinting.reduceTimerPrecision.microseconds 的值,取决于这两个值中哪一个更大,也就是,精度更低一些。

规范

规范
ECMAScript® 2027 Language Specification
# sec-date.now

浏览器兼容性

启用 JavaScript 以查看此浏览器兼容性表。

参见