微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nodejs如何获取时间戳与时间差

Nodejs中获取时间戳的方法有很多种,例如:

1.

new Date().getTime()

2.

Date.Now()

3.

process.uptime()

4.

process.hrtime()

平时想获取一个时间戳的话,用这些方法都可以,那么这些方法有什么区别呢?

new Date().getTime()和Date.Now()

这些方法是通过node运行环境的系统时间毫秒数,

+new Date()

写法的效果

new Date().getTime()

效果相同。

在需要频繁使用时间戳的场景中,需要关注方法性能,这几种方法

Date.Now()

性能最佳,可以通过一点代码来测试:

rush:js;"> var t1 = new Date().getTime(); var t2 = t1; var i = 0,count = 10000000,interval = 0;

for(i = 0; i < count; i++)
{
t2 = new Date().getTime();
interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【new Date().getTime()】interval: ',interval);

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
t2 = +new Date;
interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【+new Date】interval: ',interval);

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
t2 = Date.Now();
interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【Date.Now()】interval: ',interval);

输出结果:

【new Date().getTime()】interval: 1583

【+new Date】interval: 2189

【Date.Now()】interval: 891

如果只是获取时间戳,那么使用

Date.Now()

是最佳的做法,但是如果要计算时间差,这几个方法就会有点问题:运行环境的系统时间有时候是会有微小回调的,这样得到的时间差就不精确了,有时候会引发某些BUG。

process.hrtime()

这种方式是根据任意取的一个过去的时间点,距离现在的时间来获取一个精确的时间戳对象:[秒,纳秒]

process.hrtime() [ 3197146,563552237 ]

这种方式和系统时间无关,因此不会受到系统时钟漂移的影响,用来计算时间差的时候就不会有BUG了。

但是,万事总有但是 - -

如果用在一个被频繁调用的地方呢?

rush:js;"> var t1 = new Date().getTime(); var t2 = t1; var i = 0,interval = 0;

var hrTime1 = process.hrtime();
var hrTime2 = hrTime1;

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
hrTime2 = process.hrtime(hrTime1);
}
t2 = new Date().getTime();
interval = parseInt(hrTime2[0] 1e3 + hrTime2[1] 1e-6);
console.log('【hrTime】interval: ',interval,t2 - t1);

【hrTime】interval: 6412 6413 没有记错的话,相同的创建次数,上面的

Date.Now()

可是900ms左右啊!

process.hrtime()

也太慢了有木有!!!

原来nodejs处理高精度时间的时候,计算比较复杂,占用系统资源多,速度慢,那么在高频应用的地方就不适合用这个方法了。下面请看

process.uptime()

process.uptime()

函数是通过nodejs启动运行时间来得到一个秒数时间戳,精确到毫秒:

process.uptime

输入:6.419

函数以node启动时间为准,同样也不会受系统时钟漂移影响,适合用来计算时间差。

那么多次调用性能如何呢?

rush:js;"> var t1 = new Date().getTime(); var t2 = t1; var i = 0,interval = 0;

t1 = process.uptime()1000;
for(i = 0; i < count; i++)
{
t2 = process.uptime()
1000;
//interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【process.uptime()】interval: ',interval);

输出:【process.uptime()】interval: 954

process.hrtime()

相比性能就搞出很多了~

不用算那么精确,就是快!

那么需要高频计算时间差的场合,就是你了!

以上就是nodejs获取时间戳与时间差的全部内容,希望对大家平时使用nodejs的时候能有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...