web-dev-qa-db-ja.com

JavaScriptを使用してナノ秒単位で現在時刻を取得する方法はありますか?

ですから、JavaScriptを使用して現在の時間をミリ秒単位で取得できることを知っています。しかし、代わりにナノ秒単位で現在の時刻を取得することは可能ですか?

38
EdMelo

以下を使用して、ほとんどのブラウザーでマイクロ秒の精度を達成します。

window.performance.now()

こちらもご覧ください:

63
Jeffrey Yasskin

Jefferyの答えに基づいて、絶対タイムスタンプを取得するには(OPが望むように)、コードは次のようになります。

var TS = window.performance.timing.navigationStart + window.performance.now();

結果はミリ秒単位ですが、伝えられるところによると浮動小数点値「1000分の1ミリ秒の精度」です。

10
Ronenz

Node.jsなどのサーバー側環境では、次の関数を使用してナノ秒単位で時間を取得できます

function getNanoSecTime() {
  var hrTime = process.hrtime();
  return hrTime[0] * 1000000000 + hrTime[1];
}

同様にマイクロ秒も取得します:

function getMicSecTime() {
  var hrTime = process.hrtime();
  return hrTime[0] * 1000000 + parseInt(hrTime[1] / 1000);
}
8
Tahsin Turkoz

いいえ。JavaScriptレイヤーでナノ秒の精度が得られる可能性はありません。

非常に高速な操作のベンチマークを実行しようとしている場合は、数千回実行するループに入れてください。

JavaScriptは時間をミリ秒単位で記録するため、その精度で時間を取得することはできません。 smart-aleck 答えは、「1,000,000で乗算」です。

3
Ryan Lynch

はい!優れたサッズをお試しください nano-time

let now = require('nano-time');
now(); // '1476742925219947761' (returns as string due to JS limitation)
2