zoukankan      html  css  js  c++  java
  • js时区转换

    业务场景:

    页面服务器时间是东八区时间,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间。

    基本概念

    格林威治时间

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

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

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

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

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

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

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

    因为时区间的差异是以小时为单位的。所以算出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);
  • 相关阅读:
    MSSQL中with(nolock)的用法
    google reader 使用快捷键
    HTML中em标签的用法
    js正则表达式
    C#中lock关键字的用法
    面试反思
    关于IE6.7.8.FF兼容的问题
    C#中DateTime.Now.Ticks的用法和说明
    JS中eval的用法
    这两天面试时不会的笔试题
  • 原文地址:https://www.cnblogs.com/94pm/p/14434177.html
Copyright © 2011-2022 走看看