js 时差转换 getTimezoneOffset()

如果我们的应用是针对世界各地的,当要把后台(服务器)存的时间展示给不同地区的用户时,这个时间应该经过时差转换、 转成用户客户端本地的时间,然后呈现给用户,即下面用到的getTimezoneOffset()

如果单纯的换算本地时间与其他时区的时间,也要用到getTimezoneOffset()

需要了解的概念:

格林威治时间

格林威治子午线上的地方时,或零时区(中时区)的区时叫做格林威治时间,也叫世界时。(更多详细的概念不说了,这里我们不需要。) 比如我们中国是东八区,北京时间是(GMT+08:00)

获得本地与格林威治时间的时差:new Date().getTimezoneOffset(),单位为分钟。

已知格林威治时间,换算本地正确时间

本地时间 = 格林威治时间 - 时差

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

格林威治时间 = 本地时间 + 时差

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

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

目标时区时间 = 本地时间 + 时差 + 时区间隔

 

 

例子1:将本地现在时间换算成0时区时间

//算出时差,并转换为毫秒:
    var offset = new Date().getTimezoneOffset()* 60 * 1000;
    //算出现在的时间:
    var nowDate = new Date().getTime();
    //算出对应的格林位置时间
    var GMTDate = new Date(nowDate + offset);//Wed Apr 20 2016 22:27:02 GMT+0800 (CST)
    //转换成本地时间格式
    var GMTDateInLocalString = GMTDate.toLocaleString();//2016/4/20 下午10:27:02

 

例子2:将本地现在的时间换算成东2区的时间

    //东2区,东时区记做正数
    var zoneOffset = 2;
    //算出时差,并转换为毫秒:
    var offset2 = new Date().getTimezoneOffset()* 60 * 1000;
    //算出现在的时间:
    var nowDate2 = new Date().getTime();
    //此时东2区的时间
    var currentZoneDate = new Date(nowDate2 + offset2 + zoneOffset*60*60*1000);

    console.log("东2区现在是:"+currentZoneDate);

 

转载于:https://www.cnblogs.com/hamsterPP/p/5415472.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值