Date.now() - JavaScript 编辑
Date.now()
方法返回自 1970 年 1 月 1 日 00:00:00 (UTC) 到当前时间的毫秒数。
语法
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 毫秒。
// 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
的值,取决于这两个值中哪一个更大,也就是,精度更低一些。
Polyfill
该方法在 ECMA-262 第五版中被标准化,可以通过下面的代码端来兼容那些不支持该方法的引擎:
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
规范
规范版本 | 规范状态 | 说明 |
---|---|---|
ECMAScript 5.1 (ECMA-262) Date.now | Standard | 初始定义。在 JavaScript 1.5 中实现 |
ECMAScript 2015 (6th Edition, ECMA-262) Date.now | Standard | |
浏览器兼容性
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
参见
Performance.now()
— 提供了精确到亚毫秒(sub-millisecond)的时间戳,用于衡量网页性能。console.time
/console.timeEnd
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论