nodejs之时间、时间戳

*******一共有5中方法(执行效率依次降低):

Date.now();
new Date().getTime();
new Date();
process.uptime();
process.hrtime();
 

Date.now()、new Date().getTime() 和 new Date() 是浏览器环境下一直都有;

process.uptime() 返回的是Node程序已运行的时间,单位秒。

process.hrtime() 返回的是当前的高分辨率时间,格式为[秒, 纳秒]。它是相对于在过去的任意时间,该值与日期无关。优点是:可以获得一个非常精准的时间差,不会受到时钟飘逸的影响;缺点是:速度慢。

要获取一个非常精确地时间间隔,用 process.hrtime();大量循环获取时间戳的时候,要考虑性能,用 Date.now()。

监测性能的代码

function getTimeDifference(method, time) {
    var count = time || '100000';
    console.time(“one”);
    while (count) {
        eval(method);
        count--;
    }
    console.timeEnd(“one”);//计算时间间隔,结果one: 27.538ms
}

 

********五种时间戳

console.log(Date.now());//得到的是当前时间的时间戳1532163468337
console.log(process.uptime());//4.32
console.log(new Date().getTime());//得到的是当前时间的时间戳1532163468337
console.log(new Date());//2018-07-21T08:57:48.337Z
console.log(process.hrtime());//[ 198411, 435296977 ]

 

 

*********nodejs时间处理工具momentjs

Moment.js是一个javascript日起处理类库,用于解析,检验,操作,以及显示日期的工具,支持多语言,网站http://momentjs.cn

******npm install moment

nodejs 模块moment格式化时间:

var moment = require('moment');
 moment.locale('zh-cn');
  var today = {};
  var _today = moment();
  today.year = _today.format('yyyy'); /*现在的年*/
  today.date = _today.format('YYYY-MM-DD'); /*现在的时间*/
  today.yesterday = _today.subtract(1, 'days').format('YYYY-MM-DD'); /*前一天的时间*/
 
  var formatDate = moment(12345678977).format('YYYY-MM-DD HH:mm:ss'); /*格式化时间*/

 

日期格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 二月 5日 2017, 12:09:10 中午
moment().format('dddd');                    // 星期日
moment().format("MMM Do YY");               // 2月 5日 17
moment().format('YYYY [escaped] YYYY');     // 2017 escaped 2017
moment().format();                          // 2017-02-05T12:09:10+08:00

相对时间

moment("20111031", "YYYYMMDD").fromNow(); // 5 年前
moment("20120620", "YYYYMMDD").fromNow(); // 5 年前
moment().startOf('day').fromNow();        // 12 小时前
moment().endOf('day').fromNow();          // 12 小时内
moment().startOf('hour').fromNow();       // 9 分钟前

日历时间

moment().subtract(10, 'days').calendar(); // 2017年1月26日
moment().subtract(6, 'days').calendar();  // 本周一中午12点09
moment().subtract(3, 'days').calendar();  // 本周四中午12点09
moment().subtract(1, 'days').calendar();  // 昨天中午12点09分
moment().calendar();                      // 今天中午12点09分
moment().add(1, 'days').calendar();       // 明天中午12点09分
moment().add(3, 'days').calendar();       // 下周三中午12点09
moment().add(10, 'days').calendar();      // 2017年2月15日

多语言支持

moment().format('L');    // 2017-02-05
moment().format('l');    // 2017-02-05
moment().format('LL');   // 2017年2月5日
moment().format('ll');   // 2017年2月5日
moment().format('LLL');  // 2017年2月5日中午12点09分
moment().format('lll');  // 2017年2月5日中午12点09分
moment().format('LLLL'); // 2017年2月5日星期日中午12点09分
moment().format('llll'); // 2017年2月5日星期日中午12点09分

 

******日期转换成时间戳

格式:new Date(localTime).getTime();

需要注意两点:

第一,这里的str是按当地时间(localTime)计算的, 以中国为例,此处str表示北京时间(第8时区)2017年1月19日13时,亦即表示格林威治时间(第0时区)2017年1月19日05时。

第二,此处的str支持多种格式,例如以下两种写法得到的结果一致

var str1 = "2017-01-19 13:00:00";

var str2 = "Jan 19 2017 13:00:00";

var t1 = new Date(str1).getTime();

var t2 = new Date(str2).getTime();

 

******时间戳转换成日期:

格式:new Date(m);

var t1 = 1484802000000; //milliseconds

var d = new Date(t1);

console.log(d); //=>2017-01-19T05:00:000Z

需要注意的是,这里new Date(m)的参数m是标准时间戳,单位为毫秒,函数返回第0时区的日期。

 

******日期之间的比较

将日期转换成时间戳后直接进行计算即可,举例计算两个日期之间的间隔是否大于一个星期:

var str1 = "2017-02-27 13:00:00";

var str2 = "2017-03-05 13:00:00";

var t1 = new Date(str1).getTime();

var t2 = new Date(str2).getTime();

if((t2-t1)>7*24*3600*1000) console.log('interval is greater than a week');

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值