在项目开发的时候,老是会遇到一些时间, 但是呢不清楚他们之间是什么关系, 今天来整理一下这些知识
ECMAScript基于ISO 8601扩展格式的简化为日期时间定义字符串交换格式。格式如下:
YYYY-MM-DDTHH:mm:ss.sssZ
其中:
T: T 字面上出现在字符串中,表示时间元素的开头。
Z:
- 为Z时 表示 该时间为格林威治时
- 或“
+
”或“ ”后跟时间表达式的时区偏移量HH:mm
GMT:
为格林威治标准时间(Greenwich Mean Time,GMT),是指位于英国伦敦郊区的皇家格林尼治天文台当地的标准时间,因为本初子午线被定义为通过那里的经线。格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。但由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16分钟。原因在于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间基于天文观测本身的缺陷,已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)来决定。
CST:
- 中部标准时区(北美洲),Central Standard Time,UTC-6:00
- 澳洲中部时间,Central Standard Time,UTC+9:30
- 北京时间,China Standard Time,UTC+8:00
- 古巴标准时间,Cuba Standard Time,UTC-4:00
示例:Mon Dec 17 2018 11:16:25 GMT+0800 (CST)
UTC:
协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。对于大多数用途来说,UTC时间被认为能与GMT时间互换,但GMT时间已不再被科学界所确定。
UTC偏移量:
UTC偏移量是协调世界时(UTC)和特定地点的日期与时间差异,其单位为分钟。它通常以 ±[hh]:[mm]、±[hh][mm]、或 ±[hh]的格式显示。所以,如果被描述的时间比UTC早一小时(例如柏林的冬季时间),UTC的偏移量将是”+01:00”、”+0100”、或简单显示为”+01”。
计算方法: new Date().getTimezoneOffset() (单位: 分钟)
注意, 这里表示的是当前时区与UTC 的偏移量,不是时间对象.
时间换算:
本地时间 = 格林威治时间 - 时差
格林威治时间 = 本地时间 + 时差
例子: 已知本地时间,换算其他时区的时间
本地时间 + 本地时间时差 = 目标时区时间 + 目标时区的时间差
东区时间差为负数, 西区时间差为正数
var timezone = -8 //目标时区时间,东八区
var offset_GMT = new Date().getTimezoneOffset() // 本地时间和格林威治的时间差,单位为分钟
var nowDate = new Date().getTime() // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
var targetDate = new Date(nowDate + offset_GMT * 60 * 1000 - timezone * 60 * 60 * 1000)
console.log("东8区现在是:" + targetDate);