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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的WebJavaScript知识点: 1. 变量和数据类型:JavaScript有多种数据类型,包括字符串、数字、布尔值、数组、对象等,还可以使用var、let、const等关键字声明变量。 2. 运算符和表达式:JavaScript有多种运算符,包括算术运算符、比较运算符、逻辑运算符等,还可以使用表达式进行计算。 3. 控制语句:JavaScript有多种控制语句,包括if语句、switch语句、for循环、while循环等,可以根据条件执行不同的代码块。 4. 函数:JavaScript可以使用函数进行代码的封装和重用,还可以使用匿名函数、箭头函数等方式定义函数。 5. 对象和方法:JavaScript的对象可以包含属性和方法,可以使用点号或方括号来访问对象的属性和方法。 6. DOM操作:JavaScript可以使用DOM(文档对象模型)来操作HTML文档的元素,包括获取元素、修改元素属性、添加元素等。 7. 事件处理:JavaScript可以使用事件来响应用户的操作,包括点击、鼠标移动、键盘输入等,可以使用addEventListener等方法来绑定事件处理函数。 8. AJAX:JavaScript可以使用AJAX(异步JavaScript和XML)来进行数据的异步加载和交互,可以使用XMLHttpRequest对象发送请求和处理响应。 以上是一些常见的WebJavaScript知识点,掌握这些知识可以帮助你编写更加丰富和交互的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值