UTC & GWT 时间转化为当地时区时间(java & js & javascript)

一、基本概念

1、格林威治时间(GWT)

格林威治子午线上的地方时,位于伦敦郊区的皇家格林尼治天文台的标准时间,也叫世界时。比如我们中国是东八区,北京时间是(GMT+08:00)

2、协调世界时间(UTC)
UTC是根据原子钟来计算时间,现在世界上最精确的原子钟50亿年才会误差1秒,可以说非常精确。

3、北京时间(CST)
中国时间的标准。

4、太平洋时间(PST)

是在美国、加拿大、墨西哥西海岸靠近太平洋的地区使用,也被称为太平洋时区。

相比较而言:个人理解 UTC 是标准时间参照,GMT(格林威治时间)、CST(北京时间)、PST(太平洋时间)等等是具体的时区。因为GMT是根据地球的自转和公转来计算时间,而地球的自转正在缓速变慢,所以使用GMT的话,总有一天,打个比方,中午12点,并不是一天太阳当头照的时候,很可能就是早上或者晚上了。所以说UTC更加精确。

二、夏令时

是一种为节约能源而人为规定地方时间的制度。也叫夏时制,夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令时。
据称最早有夏令时构思的是本杰明·富兰克林

三、时区的处理:

服务器时间是东八区时间,前端页面会在全世界各地时区。
为兼容世界各地时间,需要:

  • 1.服务器拉取的北京时间转为本地时区的时间。
  • 2.将用户本地时间转换为北京时间传给服务器。

公式:都转换成零时区的时间(UTC时间)
其他时区时间 + 其他时区时差 = 本地时间 + 本地时差 = UTC时间 = GWT时间

JS & Javascript代码:

/**
 * 判断是否为夏令时
 * @param date
 * @returns {boolean}
 */
function isSummerTime(date) {
  const springTime = new Date(date.getFullYear(), 0, 1);
  const summerTime = new Date(date.getFullYear(), 6, 1);
  if (springTime.getTimezoneOffset() 
      === summerTime.getTimezoneOffset() 
      === date.getTimezoneOffset()) {
    return false;
  } else {
    return true;
  }
}
/**
 * 北京时间转本地时间
 */
function getLocalDate(east8date) {
  const targetTimezone = -8;
  const dif = new Date().getTimezoneOffset();
  let localTime = east8date.getTime() 
  + (targetTimezone * 60 * 60 * 1000) - dif * 60 * 1000;
  localTime -= (isSummerTime(east8date) ? 60 * 60 * 1000 : 0);
  return new Date(localTime);
}
/**
 * 本地时间转北京时间
 */
function getEast8Date(date) {
  const targetTimezone = -8;
  const dif = new Date().getTimezoneOffset();
  let east8time = date.getTime() + dif * 60 * 1000 
  - (targetTimezone * 60 * 60 * 1000);
  east8time += (isSummerTime(date) ? 60 * 60 * 1000 : 0);
  return new Date(east8time);
}

Java代码:

/**
     * 系统时区时间转成北京时区的时间发给云端
     * 云端获取的北京时区时间转成系统时区的时间显示
     */
    public static Calendar timeZoneToCalendar(Calendar calendar,cboolean toBeijingOrLocal) {
        int timeOffset;
        if (toBeijingOrLocal) {
            timeOffset = TimeZone.getDefault().getOffset(System.currentTimeMillis()) 
            - TimeZone.getTimeZone("GMT+08").getRawOffset();
        } else {
            timeOffset = TimeZone.getTimeZone("GMT+08").getRawOffset() 
            - TimeZone.getDefault().getOffset(System.currentTimeMillis());
        }
        Calendar zoneCalendar = Calendar.getInstance();
        long timeInMilis = calendar.getTimeInMillis() - timeOffset;
        zoneCalendar.setTimeInMillis(timeInMilis);
        return zoneCalendar;
    }

四、夏令时实行国家:

1. 国内:

从1986年到1991年的六个年度,在全国范围内实行夏时制,1992年起,夏令时暂停实行。

2.国际:

  • 俄罗斯

2011-2014使用夏令时

  • 美国

美国夏时制的实行与否,完全由各州、各县自行决定,不由联邦政府统一规定。目前美国绝大部分地区实行夏令时。

  • 欧盟国家

欧盟国家和瑞士都是从3月最后一个星期日到10月最后一个星期日实行夏令时。

  • 加拿大

加拿大从3月第二个星期日到11月第一个星期日实行夏令时,不过萨斯喀彻温省大部分地区不实行。

  • 墨西哥

墨西哥从4月第一个星期日到10月最后一个星期日实行夏令时,不过在首都墨西哥城,由于市长不同意总统实行夏令时的决定,有的区服从总统实行夏令时,有的区则服从市长不实行夏令时。

  • 新西兰

新西兰由于处于南半球,所以夏季和北半球相反。它从9月最后一个星期日到4月第一个星期天实行夏时。

  • 澳大利亚

澳大利亚除北部地区、昆士兰州和西澳(佩斯、珀斯)之外全部实行夏令时。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 概念解释 时区(Timezone) 为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳...
    黑炭妈阅读 6,654评论 0 5
  • 摘要:本文总结几类项目中跟时区相关的问题,给大家分享一些基本的时区知识,以及如何在软件开发和测试中注意考虑时区因素...
    BY林子阅读 729评论 1 1
  • 时间(date time)应该是一个精确的点,以便能够进行比较。但是如何能让他成为一个精确的点呢?一般的,如果需要...
    远程板砖阅读 1,852评论 1 8
  • 时区转换 主要介绍一下 Java 时区转换相关的一些概念,和转换示例。 由于夏令时的存在,应该通过Java 或者 ...
    迷路的老山羊阅读 1,909评论 1 4
  • 1、CSS 的全称是什么? CSS全称Cascading Style Sheets,即层叠样式表,用于为HTML文...
    七_五阅读 234评论 0 1