Como posso obter o registro de data e hora mais preciso no Node.js?
ps Minha versão do Node.js é 0.8.X e a extensão node-microtime não funciona para mim (falha na instalação)
javascript
node.js
v8
NiLL
fonte
fonte
Date.now()
por favor.process.hrtime()
process.hrtime()
não retorna a hora atual.No Node.js, o "tempo de alta resolução" é disponibilizado via
process.hrtime
. Ele retorna uma matriz com o primeiro elemento o tempo em segundos e o segundo elemento os nanossegundos restantes.Para obter a hora atual em microssegundos, faça o seguinte:
(Obrigado a itaifrenkel por apontar um erro na conversão acima.)
Em navegadores modernos, o tempo com precisão de microssegundos está disponível como
performance.now
. Consulte https://developer.mozilla.org/en-US/docs/Web/API/Performance/now para obter a documentação.Fiz uma implementação dessa função para Node.js, com base em
process.hrtime
, que é relativamente difícil de usar se você deseja apenas calcular o diferencial de tempo entre dois pontos em um programa. Veja http://npmjs.org/package/performance-now . De acordo com as especificações, esta função relata o tempo em milissegundos, mas é um float com precisão de submilissegundos.Na Versão 2.0 deste módulo, os milissegundos relatados são relativos a quando o processo do nó foi iniciado (
Date.now() - (process.uptime() * 1000)
). Você precisa adicionar isso ao resultado se quiser um carimbo de data / hora semelhante aDate.now()
. Observe também que você deve sempre recalcularDate.now() - (process.uptime() * 1000)
. AmbosDate.now
eprocess.uptime
são altamente confiáveis para medições precisas.Para obter a hora atual em microssegundos, você pode usar algo assim.
Veja também: O JavaScript fornece um cronômetro de alta resolução?
fonte
process.hrtime()
para obter um diff. por exemplo,var startTime = process.hrtime();
e entãovar diff = process.hrtime(startTime);
.require("performance.now")
serrequire("performance-now")
?process.hrtime()
não retorna a hora atual.Conhecido que
now
é:fonte
process.hrtime()
não retorna a hora atual.O
BigInt
tipo de dados é compatível desde Node.js 10.7.0. ( veja também o anúncio da postagem do blog ). Para essas versões suportadas do Node.js, oprocess.hrtime([time])
método agora é considerado 'legado', substituído peloprocess.hrtime.bigint()
método.tl; dr
process.hrtime.bigint()
process.hrtime()
fonte
Também há https://github.com/wadey/node-microtime :
fonte
Nanotímero Node.js
Eu escrevi uma biblioteca / objeto wrapper para node.js no topo da
process.hrtime
chamada de função. Possui funções úteis, como cronometrar tarefas síncronas e assíncronas, especificadas em segundos, milissegundos, micro ou mesmo nano, e segue a sintaxe do cronômetro javascript embutido para ser familiar.Objetos de cronômetro também são discretos, então você pode ter quantos quiser, cada um com seu próprio processo
setTimeout
ou emsetInterval
execução.É chamado de nanotímero . Confira!
fonte
Para trabalhar com mais precisão do que
Date.now()
, mas com milissegundos na precisão flutuante:fonte
Obtenha um
hrtime
único número em uma linha:Array.reduce
, quando fornecido um único argumento, usará o primeiro elemento da matriz como oaccumulator
valor inicial . Alguém poderia usar0
como valor inicial e isso também funcionaria, mas por que fazer o extra* 0
.fonte
existem pacotes npm que se ligam à função gettimeofday () do sistema, que retorna um carimbo de data / hora de precisão de microssegundo no Linux. Pesquise por npm
gettimeofday
. Chamar C é mais rápido do queprocess.hrtime()
fonte
Uma reescrita para ajudar a compreensão rápida:
Fonte: https://nodejs.org/api/process.html#process_process_hrtime_time
fonte
Não estou tão orgulhoso com esta solução, mas você pode ter um carimbo de data / hora em microssegundo ou nanossegundo desta forma:
Saiba que:
Date.now()
Date.now()
porNumber(new Date())
para obter o carimbo de data / hora em milissegundosEditar:
Aqui uma solução para ter microssegundo com vírgula, porém, a versão do número será arredondada nativamente por javascript. Portanto, se você deseja o mesmo formato todas as vezes, deve usar a versão String dele.
fonte
process.hrtime () não fornece ts atuais.
Isso deve funcionar.
fonte
Melhor?
fonte