Date.prototype.getTime()
getTime()
メソッドは、 ECMAScript 元期からの経過ミリ秒数を返します。
このメソッドは、日付と時刻を別の Date
オブジェクトへ代入する助けとして使用できます。このメソッドは、valueOf()
メソッドと機能的に同等です。
試してみましょう
構文
js
getTime()
返値
1970 年 1 月 1 日 00:00:00 UTC から指定した日時までの経過時間をミリ秒で表した数値。
時刻の低精度化
ブラウザーの設定によっては、タイミング攻撃とフィンガープリンティングに対する保護を提供するために new Date().getTime()
の精度が落とされていることがあります。 Firefox では、privacy.reduceTimerPrecision
が既定で有効になっています。既定値は Firefox 59 では 20 マイクロ秒で、 Firefox 60 では 2 ミリ秒です。
js
// Firefox 60 での時刻の精度の低下(2 ミリ秒)
new Date().getTime();
// 1519211809934
// 1519211810362
// 1519211811670
// …
// `privacy.resistFingerprinting` が有効な場合の時刻の精度の低下
new Date().getTime();
// 1519129853500
// 1519129858900
// 1519129864400
// …
Firefox では、 privacy.resistFingerprinting
も有効にできます。この場合、精度は 100 ミリ秒と privacy.resistFingerprinting.reduceTimerPrecision.microseconds
値のうち大きい方になります。
例
getTime() を使って日付をコピーする
同一の time 値を持つ date オブジェクトを構築します。
js
// month は 0 を基点とするため、birthday は 1995 年 1 月 10 日になります
const birthday = new Date(1994, 12, 10);
const copy = new Date();
copy.setTime(birthday.getTime());
実行時間を計測する
新たに生成された Date
オブジェクトでの、続く 2 個の getTime()
の結果を減算して、これらの呼び出しと呼び出しの間の時間を得ます。これは、何らかの命令の実行時間を計測するために使用できます。不要な Date
オブジェクトのインスタンス化を避けるため、Date.now()
も参照してください。
js
let end, start;
start = new Date();
for (let i = 0; i < 1000; i++) {
Math.sqrt(i);
}
end = new Date();
console.log(`Operation took ${end.getTime() - start.getTime()} msec`);
仕様書
Specification |
---|
ECMAScript Language Specification # sec-date.prototype.gettime |
ブラウザーの互換性
BCD tables only load in the browser