web-dev-qa-db-fra.com

Existe-t-il un moyen d'obtenir l'heure actuelle en nanosecondes en utilisant JavaScript?

Donc, je sais que je peux obtenir l'heure actuelle en millisecondes en utilisant JavaScript. Mais, est-il possible d'obtenir l'heure actuelle en nanosecondes à la place?

38
EdMelo

Obtenez une précision en microsecondes dans la plupart des navigateurs en utilisant:

window.performance.now()

Voir également:

63
Jeffrey Yasskin

En s'appuyant sur la réponse de Jeffery, pour obtenir un horodatage absolu (comme le souhaitait l'OP), le code serait:

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

le résultat est exprimé en millisecondes mais correspond à une valeur à virgule flottante "précise au millième de milliseconde".

10
Ronenz

Dans les environnements côté serveur comme Node.js, vous pouvez utiliser la fonction suivante pour obtenir du temps en nanosecondes

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

Obtenez également des micro secondes de la même manière:

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

Non. Il n'y a aucune chance que vous obteniez une précision en nanosecondes sur la couche JavaScript.

Si vous essayez de comparer une opération très rapide, mettez-la dans une boucle qui l'exécute plusieurs milliers de fois.

JavaScript enregistre le temps en millisecondes, vous ne pourrez donc pas obtenir le temps avec cette précision. La réponse smart-aleck est de "multiplier par 1 000 000".

3
Ryan Lynch

Oui! Essayez l'excellent sazze nano-time

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