Comment obtenir l'horodatage le plus précis dans Node.js ?
ps Ma version de Node.js est 0.8.X et l'option extension node-microtime ne fonctionne pas pour moi (crash à l'installation)
Comment obtenir l'horodatage le plus précis dans Node.js ?
ps Ma version de Node.js est 0.8.X et l'option extension node-microtime ne fonctionne pas pour moi (crash à l'installation)
Vous pouvez également utiliser l'API de performance qui fonctionne à la fois dans NodeJS et dans le navigateur :
var start = performance.timing ?
performance.timing.navigationStart :
performance.timeOrigin;
var time = (performance.now() + start) * 1000;
L'API de performance stocke la valeur en nombre à virgule flottante et la fraction est en microsecondes.
Node.js nanotière
J'ai écrit une bibliothèque/objet enveloppante pour node.js au-dessus de l'objet process.hrtime
appel de fonction. Il a des fonctions utiles, comme le chronométrage des tâches synchrones et asynchrones, spécifiées en secondes, millisecondes, micro, ou même nano, et suit la syntaxe du timer javascript intégré afin d'être familier.
Les objets minuteurs sont également discrets, de sorte que vous pouvez en avoir autant que vous le souhaitez, chacun ayant son propre objet. setTimeout
o setInterval
processus en cours.
Cela s'appelle nanotimer . Regardez !
Je ne suis pas très fier de cette solution, mais vous pouvez avoir horodatage en microseconde ou nanoseconde de cette façon :
const microsecond = () => Number(Date.now() + String(process.hrtime()[1]).slice(3,6))
const nanosecond = () => Number(Date.now() + String(process.hrtime()[1]).slice(3))
// usage
microsecond() // return 1586878008997591
nanosecond() // return 1586878009000645600
// Benchmark with 100 000 iterations
// Date.now: 7.758ms
// microsecond: 33.382ms
// nanosecond: 31.252ms
Sachez-le :
Date.now()
Date.now()
por Number(new Date())
pour obtenir l'horodatage en millisecondesEditar:
Voici une solution pour avoir la microseconde avec la virgule, cependant, la version du nombre sera arrondie nativement par javascript. Donc si vous voulez le même format à chaque fois, vous devez utiliser la version String.
const microsecondWithCommaString = () => (Date.now() + '.' + String(process.hrtime()[1]).slice(3,7))
const microsecondWithComma = () => Number(Date.now() + '.' + String(process.hrtime()[1]).slice(3,7))
microsecondWithCommaString() // return "1586883629984.8997"
microsecondWithComma() // return 1586883629985.966
Une réécriture pour aider à une compréhension rapide :
const hrtime = process.hrtime(); // [0] is seconds, [1] is nanoseconds
let nanoSeconds = (hrtime[0] * 1e9) + hrtime[1]; // 1 second is 1e9 nano seconds
console.log('nanoSeconds: ' + nanoSeconds);
//nanoSeconds: 97760957504895
let microSeconds = parseInt(((hrtime[0] * 1e6) + (hrtime[1]) * 1e-3));
console.log('microSeconds: ' + microSeconds);
//microSeconds: 97760957504
let milliSeconds = parseInt(((hrtime[0] * 1e3) + (hrtime[1]) * 1e-6));
console.log('milliSeconds: ' + milliSeconds);
//milliSeconds: 97760957
Fuente: https://nodejs.org/api/process.html#process_process_hrtime_time
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.