Date.now()
メソッドは、UTC (協定世界時) での 1970 年 1 月 1 日 0 時 0 分 0 秒 から現在までの経過時間をミリ秒単位で返します。
構文
var timeInMs = Date.now();
戻り値
"1 January 1970 00:00:00 UTC" (UNIXエポック) からの経過時間をミリ秒単位で表す 数値
。
説明
now()
は Date
の静的メソッドであるため、常に Date.now()
を使用してください。
時間の精度の低下
タイミング攻撃や Fingerprint を防止するために、Date.now()
の精度はブラウザーの設定によって丸め込まれるかもしれません。
Firefox では、privacy.reduceTimerPrecision
設定がデフォルトで有効になっており、Firefox 59 では 20 us、Firefox 60 では 2ms となっています。
// Firefox 60 で低下した時間精度 (2ms) Date.now() // 1519211809934 // 1519211810362 // 1519211811670 // ... // `privacy.resistFingerprinting` 設定が有効な場合の Date.now() の時間精度; Date.now(); // 1519129853500 // 1519129858900 // 1519129864400 // ...
Firefox では、privacy.resistFingerprinting
を設定することで、精度が 100 ms か privacy.resistFingerprinting.reduceTimerPrecision.microseconds
のどちらか大きな値となります。
互換コード
このメソッドは ECMA-262 第 5 版で標準化されました。このメソッドをサポートするよう更新されていないエンジンで、次の互換コードを使用することにより、実装の欠落を補うことができます:
if (!Date.now) { Date.now = function now() { return new Date().getTime(); }; }
仕様
仕様書 | 策定状況 | 備考 |
---|---|---|
ECMAScript 5.1 (ECMA-262) Date.now の定義 |
標準 | 初期定義。JavaScript 1.5 で実装。 |
ECMAScript 2015 (6th Edition, ECMA-262) Date.now の定義 |
標準 | |
ECMAScript Latest Draft (ECMA-262) Date.now の定義 |
ドラフト |
ブラウザ実装状況
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.
デスクトップ | モバイル | サーバー | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
now | Chrome 完全対応 5 | Edge 完全対応 12 | Firefox 完全対応 3 | IE 完全対応 9 | Opera 完全対応 10.5 | Safari 完全対応 4 | WebView Android 完全対応 あり | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 あり | Safari iOS 完全対応 あり | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応
関連情報
Performance.now()
— Web ページのパフォーマンス測定のための、ミリ秒以下の分解能を持つタイムスタンプを提供console.time()
/console.timeEnd()