如何在Node.js中获得最准确的时间戳?
ps我的Node.js版本是0.8.X,node-microtime extension对我不起作用(安装时崩溃)
发布于 2013-08-13 06:05:22
在Node.js中,“高分辨率时间”是通过process.hrtime
提供的。它返回一个数组,第一个元素是以秒为单位的时间,第二个元素是剩余的纳秒。
要获取以微秒为单位的当前时间,请执行以下操作:
var hrTime = process.hrtime()
console.log(hrTime[0] * 1000000 + hrTime[1] / 1000)
(感谢itaifrenkel指出上述转换中的一个错误。)
在现代浏览器中,可以使用微秒精度的时间作为performance.now
。有关文档,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Performance/now。
我已经基于process.hrtime
为Node.js实现了这个函数,如果你只想计算程序中两个点之间的时间差,那么使用这个函数相对比较困难。参见http://npmjs.org/package/performance-now。根据规范,此函数以毫秒为单位报告时间,但它是一个精度低于毫秒的浮点型。
在此模块的2.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)
发布于 2016-08-12 21:38:40
now('milli'); // 120335360.999686
now('micro') ; // 120335360966.583
now('nano') ; // 120335360904333
已知now
是:
const now = (unit) => {
const hrTime = process.hrtime();
switch (unit) {
case 'milli':
return hrTime[0] * 1000 + hrTime[1] / 1000000;
case 'micro':
return hrTime[0] * 1000000 + hrTime[1] / 1000;
case 'nano':
default:
return hrTime[0] * 1000000000 + hrTime[1];
}
};
发布于 2015-09-30 00:40:27
还有https://github.com/wadey/node-microtime
> var microtime = require('microtime')
> microtime.now()
1297448895297028
https://stackoverflow.com/questions/11725691
复制相似问题