根据时间戳获取时间整点差8小时解决方案

首先介绍一下:

格林尼治时间:格林威治子午线上的地方时,或零时区(中时区)的区时叫做格林威治时间,也叫世界时。(更多详细的概念不说了,这里我们不需要。)

北京时间与格林尼治时间或UTC时间相差8个时区,北京、上海、重庆位于东8区,页面服务器时间是东八区时间,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间。

获得本地与格林威治时间的时差new Date().getTimezoneOffset(),单位为分钟。了解更多:https://www.w3school.com.cn/jsref/jsref_obj_date.asp

已知格林威治时间,换算本地正确时间:
本地时间 = 格林威治时间 - 时差

已知本地时间,换算对应格林威治时间:
格林威治时间 = 本地时间 + 时差

已知本地时间,换算其他时区的时间:

为时区间的差异是以小时为单位的。所以算出0时区的时间后,再减去或加上相应的小时即可(东N区便+N小时,西N区便-N小时)。 为了方便计算,东N区记做正数,西N区记做负数,即:目标时区时间 = 本地时间 + 时差 + 时区间隔


样例:将本地时间转换为东八区时间

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);

参考:https://blog.csdn.net/u012193330/article/details/79637660

了解GMT和UTC的区别:

https://blog.csdn.net/hongweigg/article/details/50385113

http://baike.baidu.com/view/42936.htm?fr=iciba

如果本文章对你有所帮助,欢迎给我点赞  ^o^

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值