JS操作时间 - UNIX时间戳的简单介绍(必看篇)
准备知识
GMT(GreenwichMeanTime)-格林尼治时间。UTC(UniversalTimeCode)-国际协调时间。PST(PacificStandardTime,太平洋标准时间)。
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,15Aug201713:58:23GMT(gmtTime)
需求描述
我们日常生活中要表示时间,方法非常之多,打在屏幕上就是各种字符串,另外我们还要考虑到外国人表示时间的方法。比如下面这些都可以表示某个时间:
2017年8月15日20:51:22
2017.08.15
2017-08-15AM
6/13/2004
January12,2004
TueMay25200400:00:00GMT-0700
1970-01-01T00:00:00.000Z
那么问题来了,上面这些时间表示方法格式完全不统一,如果我设计个程序要求某些东西在指定时间运行,我们该怎么表示这个时间呢?在计算机编程中我们一般用一种最标准的时间表示方式:UNIX时间戳。这种时间表示方法精确到毫秒,表示方法唯一,非常适合编程处理。
核心函数
newDate()
参数可以是机器时间,参数为空时表示把当前机器时间传入。返回值是标准字符串时间。
//参数为空时 varstdStrTime=newDate(); console.log(stdStrTime); //output:2017-08-15T14:22:08.385Z vargmtTime=stdStrTime.toUTCString(); console.log(gmtTime); //output:Tue,15Aug201714:22:08GMT //参数不为空时 varstdStrTime=newDate(1502769188084); console.log(stdStrTime); //output:2017-08-15T03:53:08.084Z vargmtTime=stdStrTime.toUTCString(); console.log(gmtTime); //output:Tue,15Aug201703:53:08GMT
转成GMT时间也可以用函数toGMTString(),该方法现在已经不推荐使用。
Date.parse()
参数为标准字符串时间,返回值是对应的机器时间。
varstdStrTime="2017-08-15T03:53:08.084Z"; varmTime=Date.parse(stdStrTime); console.log(mTime); //output:1502769188084
2个问题
在JS中操作时间,和在其它语言中操作时间原理上相似,核心就是解决2个问题:
把机器时间转成人类时间
把人类时间转成机器时间
得到当前机器时间
console.log(Date.now()); //ouput:1502802483928
得到当前人类时间
varstdStrTime=newDate(); console.log(now);
上面的代码在Chrome环境中输出雷氏与这样:TueAug15201721:09:46GMT+0800(ChinaStandardTime)。在Node.js环境中输出类似与这样:2017-08-15T13:06:34.806Z
给出标准字符串时间转成机器时间
varstdStrTime="2004-05-25T00:00:00.000Z"; varmTime=Date.parse(humanTime); console.log(machineTime); //output:1085443200000
给出机器时间转成标准字符串时间
varmTime=1085443200000; varstdStrTime=newDate(mTime); console.log(stdStrTime); //output:2004-05-25T00:00:00.000Z
参考书籍
JavaScript高级程序设计第三版
以上这篇JS操作时间-UNIX时间戳的简单介绍(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。