海阔凭鱼跃,天高任鸟飞。Hey 你好!我是秦爱德。😄
导读
在我们日常项目开发当中,必不可少的就是对
日期时间
的处理。针对此类需求,通常第三方插件或者广大轮子哥们已然为我们提供了全套服务(开箱即用,手动点赞👍👍👍)。当然了,我们也可以通过系统对象
new Date()
来轻松实现对时间的处理。不过对于出场率如此之高的
new Date()
你真的了解它么?
什么是时区?时间标准如何定义?JavaScript中的时区有何不同?
稳住,别慌!今天就让我们来扒开
Date()
的外衣,看看它背后的冷知识。😜😜😜
什么是时区?
通过查阅维基百科我们可以得出一个结论:一个时区是地球上的某个区域是观察一个统一的标准时间为法律,商业和社会的目的。时区往往遵循国家及其分区的边界,而不是严格遵循经度,因为便于紧密商业或其他通信区域保持同一时间。 传送门
一图胜千言
1884年10月在美国华盛顿召开的国际子午线会议,采纳了一份提案。这份提案明确了,选取以穿过英国格林威治天文台子午仪中心的那条子午线,作为确定全球经度和时间的本初子午线。最终,该会议将格林威治子午线设定为本初子午线,并将格林威治平时 (GMT, Greenwich Mean Time) 作为世界时间标准。由此也确定了全球24小时自然时区的划分,所有时区都以和 GMT 之间的偏移量做为参考。
一个时区内的当地时间,会用与世界标准时间 (UTC) 之间的偏移量来定义。这个偏移量可以表示为 UTC- 或 UTC+,后面接上偏移的小时数和分钟数。
我们常说的“时差”其实就是时区的差距,规定将全球划分为24个时区(东、西各12个时区)。每个时区横跨15个金纬度,相当于一个小时。
举个栗子: 🌰
美国纽约州纽约的时区为:GMT-4
中国四川省成都市的时区为:GMT+8
咱们大成都和美国纽约的时差为 8 - (-4) = 12
UTC - 世界时间的标准
- 世界时间 (UT) 产生于1884年的华盛顿子午线会议。它是如今我们使用的24小时时区系统的基础。
- 世界标准时间 (UTC, Coordinated Universal Time) 是当今民用时间的基础。它使用一天 24 小时时间制,并结合了地球的自转时间与原子钟的高精度度量。
- UTC 是一个全球通用的时间标准。全球各地都同意将各自的时间进行同步协调 (coordinated),这也是 UTC 名字的来源:Universal Coordinated Time。
JavaScript中的new Date()
创建一个 JavaScript Date 实例,该实例呈现时间中的某个时刻。Date 对象则基于 Unix Time Stamp ,即指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
获取时区
// 当我们在谷歌浏览器控制台输入(我的坐标是在成都) new Data(),则输出
// Tue Sep 22 2020 16:47:13 GMT+0800 (中国标准时间)
// 眼尖的小伙伴可能已经发现 'GMT+0800' 字样,没错!这就是我们所在地的时区
// 可通过getTimezoneOffset函数来获取当前地方时和UTC时间的差值(分钟表示)。