• JS操作时间


    准备知识

    GMT(Greenwich Mean Time) - 格林尼治时间。UTC(Universal Time Code) - 国际协调时间。PST(Pacific Standard Time,太平洋标准时间)。

    UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几秒钟。

    UTC开始时间为:1970-01-01T00:00:00.000Z(这种时间设置可以一直精确到毫秒,字母T和Z仅仅是一种格式)

    UNIX时间戳指的是从1970-01-01T00:00:00.000Z到现在的毫秒数。(1s=1000ms)

    本文需要用到的时间规定如下:
    机器时间 - UNIX时间戳。(mTime)
    人类时间 - 人类可读的各种时间。(hTime)
    标准字符串时间 - 1970-01-01T00:00:00.000Z(stdStrTime)
    GMT时间 - Tue, 15 Aug 2017 13:58:23 GMT(gmtTime)

    需求描述

    我们日常生活中要表示时间,方法非常之多,打在屏幕上就是各种字符串,另外我们还要考虑到外国人表示时间的方法。比如下面这些都可以表示某个时间:

    • 2017年8月15日20:51:22
    • 2017.08.15
    • 2017-08-15 AM
    • 6/13/2004
    • January 12, 2004
    • Tue May 25 2004 00:00:00 GMT-0700
    • 1970-01-01T00:00:00.000Z
      那么问题来了,上面这些时间表示方法格式完全不统一,如果我设计个程序要求某些东西在指定时间运行,我们该怎么表示这个时间呢?在计算机编程中我们一般用一种最标准的时间表示方式:UNIX时间戳。这种时间表示方法精确到毫秒,表示方法唯一,非常适合编程处理。

    核心函数

    new Date()
    参数可以是机器时间,参数为空时表示把当前机器时间传入。返回值是标准字符串时间。

    // 参数为空时
    var stdStrTime = new Date();
    console.log(stdStrTime);
    // output: 2017-08-15T14:22:08.385Z
    var gmtTime = stdStrTime.toUTCString();
    console.log(gmtTime);
    // output:  Tue, 15 Aug 2017 14:22:08 GMT
    
    // 参数不为空时
    var stdStrTime = new Date(1502769188084);
    console.log(stdStrTime);
    // output: 2017-08-15T03:53:08.084Z
    var gmtTime = stdStrTime.toUTCString();
    console.log(gmtTime);
    // output: Tue, 15 Aug 2017 03:53:08 GMT
    

    转成GMT时间也可以用函数toGMTString(),该方法现在已经不推荐使用。

    Date.parse()
    参数为标准字符串时间,返回值是对应的机器时间。

    var stdStrTime = "2017-08-15T03:53:08.084Z";
    var mTime = Date.parse(stdStrTime);
    console.log(mTime);
    // output: 1502769188084
    

    2个问题

    在JS中操作时间,和在其它语言中操作时间原理上相似,核心就是解决2个问题:

    1. 把机器时间转成人类时间
    2. 把人类时间转成机器时间

    得到当前机器时间

    console.log(Date.now());
    // ouput: 1502802483928
    

    得到当前人类时间

    var stdStrTime = new Date();
    console.log(now);
    

    上面的代码在Chrome环境中输出类似与这样:Tue Aug 15 2017 21:09:46 GMT+0800 (China Standard Time)。在Node.js环境中输出类似与这样:2017-08-15T13:06:34.806Z

    给出标准字符串时间转成机器时间

    var stdStrTime = "2004-05-25T00:00:00.000Z";
    var mTime = Date.parse(humanTime);
    console.log(machineTime);
    // output: 1085443200000
    

    给出机器时间转成标准字符串时间

    var mTime = 1085443200000;
    var stdStrTime = new Date(mTime);
    console.log(stdStrTime);
    // output: 2004-05-25T00:00:00.000Z
    

    参考书籍

    JavaScript高级程序设计第三版

  • 相关阅读:
    2017/09/02笔记:ps
    207/08/3学习笔记:pc端网站如何实现移动端适配知识点
    2017/0828xueix笔记:图像替代文本&css绘制的图形
    20170824:面试题笔记
    目前比较全的CSS重设(reset)方法总结
    学习笔记:css3实现多行文字溢出显示省略号&display:box;
    SVG圆形<circle> 标签
    k8s节点分配nodeSelector, Affinity和Anti-Affinity 亲和性和反亲和性
    kubernetes网络介绍
    centos6.7 安装docker
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7367886.html
Copyright © 2020-2023  润新知