javascript中时区知识的整理UTC GMT问题
GMT, UTC 是什么?
- GMT: 格林尼治时间
- UTC: 协调世界时
GMT 与 UTC 不完全相同, 但都是指 0 时区时间, 一般情况可以视作同义
作为 javascript 开发者, 是不是对 GMT 很眼熟?
其实 GMT 就是我们调用 new Date(); 时, 返回的字符串 “Wed Jan 06 2021 17:48:30 GMT+0800 (中国标准时间)” 中的 GMT
GMT+0800: 中国是东8区, 所以是 格林尼治时间 + 08:00 (东正西负; +0800 即是 +08:00, 的意思; 有兴趣的自行上网学习)
时差是什么?
本文中的"时差"指的是 javascript 中的时差, 而不是地理上的时差
javascript 中的时差是指 格林威治时间和本地时间之间的时间差
也就是
格林威治时间 - 本地时间 = 时差
经过简单换算, 可得以下结论:
- UTC + 8 = GMT + 8 = 北京时间(中国是东8区)
- 格林威治时间 + 8 = 北京时间
- 格林威治时间 - 北京时间 = -8
- 格林威治时间 - 本地时间 = 时差
getTimezoneOffset()
javascript 提供一个方法用于获取时差
getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位
用法:
new Date().getTimezoneOffset() // -480
javascript 时间戳
指定的日期和时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
这里强调两点, 两点缺一不可
- 1970 年 1 月 1 日 0 时 0 分 0 秒
- 格林威治时间
设置日期时间
new Date() 可以不传值也可以接受好几种值
new Date(时间戳)
- 先根据传入毫秒数算得 GMT, 再把 GMT 转换到本地时区
- 所以传入 0 得到的不是 0 点而是 8 点(中国是东8区)
new Date(时间字符串)
- 时间字符串可以是这样的 “1970-1-10 0:0:0”
- 还可以在后面补充指定时区 “1970-1-10 0:0:0 gmt+0900”
- 不指定时区, 默认是 GMT+0800(中国是东8区)
- 最后转换成本地时区
new Date(year, month, day, hours, minutes, seconds, milliseconds)
- 最少传入两数据, 传 null 或不传, 为当前时间的值
- 传入的是本地时区
- 获得的是本地时区
获取时间戳
方法很多
- new Date().getTime()
- new Date().valueOf()
- +new Date()
- Date.now()
得到的时间戳, 是把本地时间(北京时间)换算成 GMT , 再计算跟 1970 年 1 月 1 日 0 时 0 分 0 秒 的毫秒差值
Date.UTC()
Date.UTC(年,月,日,时,分,秒,毫秒)
得到的时间戳, 直接就是 GMT, 再计算跟 1970 年 1 月 1 日 0 时 0 分 0 秒 的毫秒差值
UTC() 方法可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数
参数不能为空, 可以为 null, 缺失值或 null 以 0 补充
UTC, 时差, 本地时间关系的代码表达
var _date = new Date(); var _UTC = Date.UTC(_date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds()); var _BJ = _date * 1; var _timeDifference = new Date().getTimezoneOffset() * 60 * 1000 _BJ - _UTC === _timeDifference // true
//end
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
本文主要对JavaScript的几种Math函数,random(),ceil(),round(),floor()的作用进行简要解析,具有很好的参考价值,需要的朋友一起来看下吧2016-12-12深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle )。2012-01-01js中arguments,caller,callee,apply的用法小结
本篇文章只要是对js中arguments,caller,callee,apply的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助2014-01-01
最新评论