zoukankan      html  css  js  c++  java
  • 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高级程序设计第三版

  • 相关阅读:
    centos7.6 安装与配置 MongoDB yum方式
    MongoDB 介绍
    centos 关闭selinux
    前端 HTML标签属性
    前端 HTML 标签嵌套规则
    前端 HTML 标签分类
    前端 HTML body标签相关内容 常用标签 表单标签 form里面的 input标签介绍
    前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
    前端 HTML form表单标签 select标签 option 下拉框
    POJ 1426
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7367886.html
Copyright © 2011-2022 走看看