nodejs之时间、时间戳

2023-11-06

*******一共有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');

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nodejs之时间、时间戳 的相关文章

随机推荐

  • openssl的证书链验证

    原文地址 http blog csdn net dog250 article details 5442914 使用openssl验证证书链可以用以下命令 debian home zhaoya openssl openssl verify C
  • C语言分支循环语句

    需提前看 初识C语言 5 C语言一些基本常识 目录 分支语句 if语句 单if语句使用 if else语句 if else if else语句 switch语句 switch基本结构 break作用 default作用 循环语句 while
  • 【Vscode

    Rmd文件转html R语言环境 Vscode扩展安装及配置 配置radian R依赖包 pandoc安装 配置pandoc环境变量 验证是否有效 转rmd为html 注意本文代码块均为R语言代码 在R语言环境下执行即可 R语言环境 官网中
  • shell I/O重定向

    shell重定向 lt 改变标准输入 program lt file 可将program 的标准输入改为file tr d r lt dos file txt 以 gt 改变标准输出 program gt file 可将program的标准
  • Qt基础之三十:百万级任务并发处理

    在实际的开发过程中 经常会遇到要处理大量任务场景 比如说压缩文件夹中的所有文件 对文件夹中的所有文件加密 上传文件夹中的所有文件到ftp等等 这里说百万级并不夸张 理论上文件夹中有任意多个文件都是可以的 本文以压缩文件夹中的100万张jpg
  • 三国志13pk版登录武将输入中文名方法与更改图像详解

    今天来个正经的文 三国志13里登录武将 设定姓名时 如果用的是自带输入法 就会出现一堆乱码 这时候 有两种解决方法 下载一个具有大五码的输入法 然后输入时候既要切换输入法 切换繁体 切换窗口模式 很麻烦 尤其在输入列传的时候 打很多字会很不
  • 【架构优化过程思考】技术方案评估的三个维度

    方案的选择决定了当下实现方案的资源投入及产出对产 也决定后续的成本 评估一个方案 首先要评估这个方案的有效性 也就是说要解决这个问题 实现目标 当前的这个方案是否足够的有效 还是在部分的场景下有效 如果是全部的有效那么该方案就不会出现上线之
  • 二叉树--合并二叉树

    问题 已知两颗二叉树 将它们合并成一颗二叉树 合并规则是 都存在的结点 就将结点值加起来 否则空的位置就由另一个树的结点来代替 思路 通过二叉树的前序遍历方法进行遍历 同时 t1二叉树作为蓝本进行计算 注意设置两个指针记录t1和t2遍历到的
  • JavaScript重写alert,confirm,prompt方法(JavaScript实现线程非阻塞式暂停和启动)

    得有段时间没好好写篇博客了 这次我们从一个题目开始吧 首先我给大家出一道题目 大家可以先思考一下 再往下看 题目是 请用JavaScript重写confirm方法 实现和confirm同样的功能 乍一看可能感觉很简单 定义一个confirm
  • php cms 自动分词,灵活运用PHPAnalysis分词组件,实现Phpcms v9关键词自动分词

    在2019年12月下旬 Phpcms官网phpcms cn关闭后 原有的分词api接口 http tool phpcms cn api get keywords php 已经失效 在录入标题后再也不能自动提取关键词到关键词的输入栏了 针对这
  • ReentrantLock的实现

    ReentrantLock可重入锁 我们可以利用这个实现对某一个操作约束为同有个时刻只能有一个线程能够操作 我们呢先看一下下面这个demo public class ReentrantLockTest public static void
  • 初级黑客入门指南——强烈推荐

    黑客指的是在计算机或计算机网络中发现弱点的人 尽管这个术语也可以指对计算机和计算机网络有深入了解的人 黑客的动机可能是多方面的 比如利润 抗议或挑战 围绕黑客发展的亚文化通常被称为 地下计算机 但现在它是一个开放的社区 虽然黑客这个词的其他
  • Python之由公司名推算出公司官网(余弦相似度)

    读大学时期写的博文 1 问题 对展会数据分类后 我的新任务是如何通过 公司名 公司地址 国家等海关数据推断出该公司的官网网站 若官网不存在则不考虑 以下数据仅供参考 公司名 国家 地址 JPW INDUSTRIES INC 427 NEW
  • 经典神经网络 -- DenseNet : 设计原理与pytorch实现

    原理 概念与网络结构 DenseNet模型 它的基本思路与ResNet一致 但是它建立的是前面所有层与后面层的密集连接 dense connection DenseNet的一大特色是通过 特征在channel上的连接 来实现特征重用 fea
  • 《Python笔记》安装(pip)第三方包报错

    目录 Python版本 报错信息 pip 安装numpy报错 pip 安装 scipy报错 pip 安装 pywin32 报错 解决办法 网络方法1 网络方法2 亲测解决方法 Python版本 python Python 3 8 10 ta
  • 使用QT的QChart写自己的示波器_QChart波形显示

    我几个月前最开始学习QT 就是从完成波形显示的功能开始的 之前工作的上位机需要有虚拟示波器功能 也就是波形显示 不曾玩过QT的小白 被安排学习完成一下 当时便选用QChart 根据领导需求也更新迭代过2次代码 第一次参考大佬 ctrl c
  • 2019年厦门大学计算机系夏令营经历

    2019 07 12 2019 07 15 厦门大学信息学院夏令营 计算机系笔试 上机 面试 一 笔试 数据结构 2019 07 13 填空题 一空三分 顺序存储 将一个数插到数字i下标的前面 需要移动多少个元素 m数组和n数组 最坏情况下
  • Function.prototype.bind() ,Function.prototype.call() and function.prototype.apple()

    function prototype bind Function prototype call function prototype apple
  • APISIX源码解析-执行阶段【http_header_filter_phase、http_body_filter_phase、http_log_phase、http_balancer_phase】

    http header filter phase function M http header filter phase if ngx var ctx ref then prevent for the table leak local st
  • nodejs之时间、时间戳

    一共有5中方法 执行效率依次降低 Date now new Date getTime new Date process uptime process hrtime Date now new Date getTime 和 new Date 是