如何在Node.js中获得微时间?
如何在 Node.js 中获取最准确的时间戳?
ps我的Node.js版本是0.8.X,node-microtime扩展对我不起作用(安装时崩溃)
如何在 Node.js 中获取最准确的时间戳?
ps我的Node.js版本是0.8.X,node-microtime扩展对我不起作用(安装时崩溃)
在 Node.js 中,“高分辨率时间”可通过 process.hrtime 获得
。它返回一个数组,其中第一个元素的时间以秒为单位,第二个元素以剩余的纳秒为单位。
要获取当前时间(以微秒为单位),请执行以下操作:
var hrTime = process.hrtime()
console.log(hrTime[0] * 1000000 + hrTime[1] / 1000)
(感谢itaifrenkel指出了上述转换中的错误。
在现代浏览器中,具有微秒精度的时间可用作 。有关文档,请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Performance/now。performance.now
我已经为 Node.js 做了一个基于 的函数的实现,如果您只想计算程序中两点之间的时间差,则相对难以使用。请参阅 http://npmjs.org/package/performance-now 。根据规范,此函数以毫秒为单位报告时间,但它是具有亚毫秒精度的浮点数。process.hrtime
在此模块的 V2.0 中,报告的毫秒数相对于节点进程启动的时间 ()。如果需要类似于 的时间戳,则需要将其添加到结果中。另请注意,您应该重新计算 。两者对于精确测量都是高度不可靠的。Date.now() - (process.uptime() * 1000)
Date.now()
Date.now() - (process.uptime() * 1000)
Date.now
process.uptime
要获取以微秒为单位的当前时间,可以使用类似如下的内容。
var loadTimeInMS = Date.now()
var performanceNow = require("performance-now")
console.log((loadTimeInMS + performanceNow()) * 1000)
new Date().getTime()
?这为您提供了以毫秒为单位的时间戳,这是JS为您提供的最准确的时间戳。
更新:正如vaughan所说,在Node.js中可用 - 它的分辨率是纳秒,因此它要高得多。此函数返回一个包含当前实时高分辨率值的数组,但请注意,它不与任何特定时钟绑定,这意味着两个连续值的差异会告诉您经过了多少时间,但单个值不会告诉您任何有意义的信息。process.hrtime()
[seconds, nanoseconds]
另请注意,从节点 v10 开始,已标记为“旧版”,您应该改用,这将产生单个 BigInt 编号而不是数组。process.hrtime()
process.hrtime.bigint()