谈谈JS的时间对象(三)–时间的常识了解

非技术性“小点心”,供君品尝

时间是一个生活中重要的参考参数,它就在我们身边。当我们的视野只放在身边周围时,我们切身体会的是当地时间;当我们把时间放在全球化潮流中的时候,当地时间这个参考参数已经不能满足我们的需求了。想一想这个场景:

当我们在这边刚刚起床,准备美好一天的时候,地球的某个角落此时可能已经是夕阳西下,人们准备卸下一天的疲劳了。

鉴于地球是圆的,全世界各地对“此时”的时间所处的场景是不一样的。为了统一时间的表示,出现了对时间的标准定义。


理论

GMT时间

起初是GMT时间(GreenWich Mean Time),被译为格林威治(英国)标准时间。它把地球分为24个时区,每个相邻的时区间隔为15个经度(24*15=360),时间相差一个小时。而格林威治所处的地理位置为子午线(隐隐约约好像初中的地理见过这个词)。
子午线将地球像西瓜一样切成了两部分,一部分是东区,另一部分是西区(地球是自西向东自转的)。东区的本地时间领先(+时区差)格林威治时间,而西区的时间要落后(-时区差)格林威治时间。北京是属于东八区的,当格林威治时间为2017年6月12日 15时03分时,北京的本地时间为2017年6月12日 23时03分(+0800)

UTC时间

再后来,出现了UTC时间。比起GMT时间,它更加精确,更正式,其误差必须不超过0.9秒,可以暂且模糊地认为它是GMT时间的升级版,上述的GMT时间的特性依然适用于UTC时间,比如,它也是以格林威治为基础将世界分为东区和西区……

那么是该使用UTC呢还是GMT时间呢?对于对时间精确度不高的(不计较秒的时间),使用哪个都没关系。如果要精确度高的话,就使用UTC时间,一般生活中不会计较使用哪个的。反正我不会较真到必须每天八点10分04秒起床的。O(∩_∩)O哈哈~

一般我经常用UTC时间要多于GMT时间,原因很简单,就是JavaScript中的方法有UTC时间的一些处理方法,我可以随时调用。

那么下面我已UTC时间为例。其东区的时区差为“+”(正号),西区的时区差为“-”(负号)。
其公式为:

UTC时间 + 时区差 = 本地时间

一些地方的时区:

北京–东八区
日本、韩国–东九区
美国华盛顿、纽约–西五区

举个栗子

1.计算北京时间2017-6-13 21:45时的UTC时间是多少?

北京时间的时分是21:45,记作:2145。
北京属于东八区,其时区差是+8,记作+0800。
根据公式,UTC时间 + 时区差 = 本地时间
UTC时间 + (+0800) = 本地时间
UTC时间 = 2145-0800 = 1345
所以当北京时间是2017-06-13 21:45时,UTC时间是2017-06-13 13:45

2.分别计算UTC时间为2017-6-13 22:15时的北京时间和2017-6-13 02:15时的纽约时间?

北京时区记作:+0800
UTC的时分记作:2215
根据公式:北京时间 = 2215+(+0800)= +0615
(一天24小时制,结果中的+表示后一天)


纽约时区记作:-0500
UTC的时分记作:0215
根据公式:纽约时间 = 0215+(-0500)= –2115
(一天24小时制,结果中的–表示前一天)
所以当UTC时间2017-6-13 02:15时的纽约时间为2017-6-12 21:15


附注

  1. 上述的计算是24小时制的,即下午1点表示为13点
  2. HTML5中time标签的datetime属性可以用UTC时间,如

  3. 不同的浏览器控制台显示的new Date()的格式是不一样的。比如:

IE(11): Tue Jun 13 22:25:2 UTC+0080。表示采用UTC时间,时区差为+0800,本地时间2017-6-13 22:25:23 周二
Firefox:2017-06-13T14:25:23.914Z。表示采用UTC时间,UTC时间2017-6-13 14:25:23:914
Chrome:Tue Jun 13 2017 22:25:23 GMT+0800 (中国标准时间)。表示采用GMT时间,时区差为+0800,本地时间2017-6-13 14:25:23 周二

情景在线
接下来,我们吃着火锅唱着歌……
谈谈JS的时间对象(三)–时间的常识了解_第1张图片

你可能感兴趣的:(JS,Date对象,时间的涉猎,时间,二十四时区,UTC,GMT)