返回用户所在地区的时间和时区,针对面向海外全球用户兼容处理

话不多说,先上效果图

 

 业务场景:由于公司业务涉及海外用户,客服在线时间与用户当地不相同,再加上业务广泛各个国家时区都有,所以才需要此需求

思路:通过取得用户所在地区的时间差(格林威治时间和用户时间之间的时差),然后来计算出用户所在地区的时间

踩坑:在中国,用getTimezoneOffset()方法返回出来的时间差是负8小时,可实际上中国的时间与格林威治时间应该是+8小时才对。导致我计算标准时间踩了坑

这是因为用这个方法返回出来的时间,是以当地(中国)的时间为标准,中国的时间距离标准的格林威治时间就是负的

主要代码:

//时间差,除以60就是以小时为单位
new Date().getTimezoneOffset() / 60

 看看实际效果

先在data中定义变量

data() {
    return {
      timeText: '', //客服在线时间
      timeArea: '', //客服时间时区
    }
}
created() {
      //在线时间
      let timeCha = -(new Date().getTimezoneOffset() / 60);
      // 下面的 0 和 12 是通过以中国时间为标准计算后的格林威治时间,对应的是8和20;
      let stratTime = 0 + timeCha;
      let endTime = 12 + timeCha;
      let countNum = 0;
      while (stratTime < 0 && countNum < 10) {
        stratTime += 24;
        countNum += 1;
      }
      while (stratTime >= 24 && countNum < 10) {
        stratTime -= 24;
        countNum += 1;
      }
      while (endTime < 0 && countNum < 10) {
        endTime += 24;
        countNum += 1;
      }
      while (endTime > 24 && countNum < 10) {
        endTime -= 24;
        countNum += 1;
      }
      let string_stratTime = stratTime.toString();
      let string_endTime = endTime.toString();
      if (string_stratTime.length < 2) string_stratTime = '0' + string_stratTime;
      if (string_endTime.length < 2) string_endTime = '0' + string_endTime;
      that.timeText = string_stratTime + ':00-' + string_endTime + ':00';



      //用户所在地区的时区
      let linshiArea = new Date().toString().split('(')[1].split(')')[0];
      that.timeArea = linshiArea;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值