前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全球城市ZoneId和UTC时间偏移量的最全对照表

全球城市ZoneId和UTC时间偏移量的最全对照表

原创
作者头像
YourBatman
修改2021-01-22 18:09:33
4.1K0
修改2021-01-22 18:09:33
举报
文章被收录于专栏:BAT的乌托邦BAT的乌托邦

前言

你好,我是A哥(YourBatman)。

如你所知,现行的世界标准时间是UTC世界协调时,时区已不直接参与时间计算。但是呢,城市名称or时区是人们所能记忆和容易沟通的名词,因此我们迫切需要一个对照表,能让只知道城市名或者ID的情况下就迅速知道它的偏移量,从而计算出当地的本地时间。

本文作为时区、偏移量知识点的补充,整体内容相对轻松,但依旧以实用为主,我尽力用本系列助你解决Java日期时间处理的所有痛点,对,是所有。日后应对日期/时间处理的任何问题,只需要看本系列就够了。

本文提纲

版本约定

  • JDK:8

正文

我们在去住酒店的时候,可以看到酒店大厅里的前台墙上一般会挂有好几个时钟,分别展示北京时间、纽约时间、伦敦时间、巴黎时间等等世界主要城市时间。

前面我连续用了两篇文章从概念介绍到Java实战,很全面的介绍了日期时间中GMT/UTC时间、夏令时、时间戳等等Java是如何处理的。从后台数据上看,这两篇文章的收藏量明显高于之前的绝大多数文章,正所谓数据不会骗人,说明日期时间的处理上确实有很同学是有痛点或者盲点的。

前两篇文章篇幅较长,适合收藏备用,可戳这里直达:全网最全!彻底弄透Java处理GMT/UTC日期时间

要想知道某个地方(城市)的本地时间,就需要先确定该城市的偏移量,然后以UTC为基准加上偏移量计算出其本地时间。

说明:本地时间的最小区域单位是城市

那么问题来了,世界上的“城市”那么多,如何知道具体某个城市它的偏移量是多少,从而计算出其本地时间呢?

城市ZoneId - UTC偏移量

下面给你介绍两种方式,任君选择。

方式一:第三方站点

在前面文章我给大家推荐过一个网站,上面列出了全球主要国家/城市ID对应的偏移量数据:

国家/城市ID与偏移量的对应关系,全部内容请参考网址(直接访问,无需梯子):https://www.timeanddate.com/time/zones

用这种方式的优点是方便快捷,但缺点也非常明显:

  1. 这个网址需要记忆/收藏,一定程度上增加了使用负担
  2. 依赖外网
  3. 由于夏令时的存在,该网站只能显示瞬时(当时)的一个对应情况,而这并非固定不变的

上述第3点是通过网站查询的致命问题,并且这一点还很容易被使用者忽略从而产生错误。作为有众多技法的程序员,当然希望能够“解决”此问题喽,那就看第二种方式吧。

方式二:自写程序(推荐)

前面文章介绍过Java提供了相关API来获取到全量的(已收录的)ZoneId:

代码语言:txt
复制
ZoneId[] zoneIds = ZoneId.getAvailableZoneIds();

基于它,再经过一些计算就能得到ZoneId对应的偏移量,完全实现自主化,不再“求人”。

下面我先列出世界主要城市时区ID对应的UTC偏移量(文末附全量表格):

时区ID

UTC偏移

Asia/Shanghai

+08:00

Asia/Chongqing

+08:00

America/New_York

-05:00

Europe/London

Z

Europe/Paris

+01:00

Europe/Moscow

+03:00

Asia/Tokyo

+09:00

Asia/Dubai

+04:00

Asia/Seoul

+09:00

Asia/Bangkok

+07:00

Asia/Jakarta

+07:00

特别说明:本表格生成于北京时间2021-01-19 08:00:00,由于各地夏令时的存在,不同时间生成的表格UTC偏移值不尽相同

看名称知道这些都是哪些城市了吧?注意:没有Asia/Beijing哦,绝大部分情况下我国使用的都是Asia/Shanghai这个ID。

看英国伦敦(Europe/London)它的偏移量是Z,代表+00:00偏移量,属于0时区、0偏移量地区,毕竟格林威治在那,它是世界的“时间中心”。

值得特别注意:该表格必须绑定上生成时间才有意义,否则因为一些时间规则(如夏令时)的存在会导致不同时间生成的内容不一样。比如看我给你模拟的这个例子打印日志:

代码语言:txt
复制
public static void main(String[] argv) {
    LocalDateTime bjTime = LocalDateTime.now();
    Map<String, ZoneOffset> allZoneIdOffSetMap = allZoneIdOffSet2MapByBjTime(bjTime);
    System.out.println("北京时间" + bjTime + ",美国纽约的偏移量:" + allZoneIdOffSetMap.get("America/New_York"));

    // 让当前北京时间深处纽约2021年夏令时时间区间内
    bjTime = LocalDateTime.of(2021, 05, 05, 18, 01, 01);
    allZoneIdOffSetMap = allZoneIdOffSet2MapByBjTime(bjTime);
    System.out.println("北京时间" + bjTime + ".000,美国纽约(夏令时期间)的偏移量:" + allZoneIdOffSetMap.get("America/New_York"));
}

运行程序,输出:

代码语言:txt
复制
北京时间2021-01-19T08:25:13.162,美国纽约的偏移量:-05:00
北京时间2021-05-05T18:01:01.000,美国纽约(夏令时期间)的偏移量:-04:00

由此可见,纽约这个城市因为有夏令时的存在,因此在不同的时间段它的偏移量是不同的。备注:纽约2021年夏令时情况如下表:

当然喽,这个例子的最重点方法是allZoneIdOffSet2MapByBjTime()是如何计算的?为了避免大量贴代码影响阅读,我把它的源码放到了后台。对此部分计算逻辑感兴趣的同学可在公号后台回复“时区”二字来获取源码内容。

附:全部城市对应偏移量

时区ID

UTC偏移

Asia/Aden

+03:00

America/Cuiaba

-04:00

Etc/GMT+9

-09:00

Etc/GMT+8

-08:00

Africa/Nairobi

+03:00

America/Marigot

-04:00

Asia/Aqtau

+05:00

Pacific/Kwajalein

+12:00

America/El_Salvador

-06:00

Asia/Pontianak

+07:00

Africa/Cairo

+02:00

Pacific/Pago_Pago

-11:00

Africa/Mbabane

+02:00

Asia/Kuching

+08:00

Pacific/Honolulu

-10:00

Pacific/Rarotonga

-10:00

America/Guatemala

-06:00

Australia/Hobart

+11:00

Europe/London

Z

America/Belize

-06:00

America/Panama

-05:00

Asia/Chungking

+08:00

America/Managua

-06:00

America/Indiana/Petersburg

-05:00

Asia/Yerevan

+04:00

Europe/Brussels

+01:00

GMT

Z

Europe/Warsaw

+01:00

America/Chicago

-06:00

Asia/Kashgar

+06:00

Chile/Continental

-03:00

Pacific/Yap

+10:00

CET

+01:00

Etc/GMT-1

+01:00

Etc/GMT-0

Z

Europe/Jersey

Z

America/Tegucigalpa

-06:00

Etc/GMT-5

+05:00

Europe/Istanbul

+03:00

America/Eirunepe

-05:00

Etc/GMT-4

+04:00

America/Miquelon

-03:00

Etc/GMT-3

+03:00

Europe/Luxembourg

+01:00

Etc/GMT-2

+02:00

Etc/GMT-9

+09:00

America/Argentina/Catamarca

-03:00

Etc/GMT-8

+08:00

Etc/GMT-7

+07:00

Etc/GMT-6

+06:00

Europe/Zaporozhye

+02:00

Canada/Yukon

-08:00

Canada/Atlantic

-04:00

Atlantic/St_Helena

Z

Australia/Tasmania

+11:00

Libya

+02:00

Europe/Guernsey

Z

America/Grand_Turk

-05:00

US/Pacific-New

-08:00

Asia/Samarkand

+05:00

America/Argentina/Cordoba

-03:00

Asia/Phnom_Penh

+07:00

Africa/Kigali

+02:00

Asia/Almaty

+06:00

US/Alaska

-09:00

Asia/Dubai

+04:00

Europe/Isle_of_Man

Z

America/Araguaina

-03:00

Cuba

-05:00

Asia/Novosibirsk

+07:00

America/Argentina/Salta

-03:00

Etc/GMT+3

-03:00

Africa/Tunis

+01:00

Etc/GMT+2

-02:00

Etc/GMT+1

-01:00

Pacific/Fakaofo

+13:00

Africa/Tripoli

+02:00

Etc/GMT+0

Z

Israel

+02:00

Africa/Banjul

Z

Etc/GMT+7

-07:00

Indian/Comoro

+03:00

Etc/GMT+6

-06:00

Etc/GMT+5

-05:00

Etc/GMT+4

-04:00

Pacific/Port_Moresby

+10:00

US/Arizona

-07:00

Antarctica/Syowa

+03:00

Indian/Reunion

+04:00

Pacific/Palau

+09:00

Europe/Kaliningrad

+02:00

America/Montevideo

-03:00

Africa/Windhoek

+02:00

Asia/Karachi

+05:00

Africa/Mogadishu

+03:00

Australia/Perth

+08:00

Brazil/East

-03:00

Etc/GMT

Z

Asia/Chita

+09:00

Pacific/Easter

-05:00

Antarctica/Davis

+07:00

Antarctica/McMurdo

+13:00

Asia/Macao

+08:00

America/Manaus

-04:00

Africa/Freetown

Z

Europe/Bucharest

+02:00

Asia/Tomsk

+07:00

America/Argentina/Mendoza

-03:00

Asia/Macau

+08:00

Europe/Malta

+01:00

Mexico/BajaSur

-07:00

Pacific/Tahiti

-10:00

Africa/Asmera

+03:00

Europe/Busingen

+01:00

America/Argentina/Rio_Gallegos

-03:00

Africa/Malabo

+01:00

Europe/Skopje

+01:00

America/Catamarca

-03:00

America/Godthab

-03:00

Europe/Sarajevo

+01:00

Australia/ACT

+11:00

GB-Eire

Z

Africa/Lagos

+01:00

America/Cordoba

-03:00

Europe/Rome

+01:00

Asia/Dacca

+06:00

Indian/Mauritius

+04:00

Pacific/Samoa

-11:00

America/Regina

-06:00

America/Fort_Wayne

-05:00

America/Dawson_Creek

-07:00

Africa/Algiers

+01:00

Europe/Mariehamn

+02:00

America/St_Johns

-03:30

America/St_Thomas

-04:00

Europe/Zurich

+01:00

America/Anguilla

-04:00

Asia/Dili

+09:00

America/Denver

-07:00

Africa/Bamako

Z

Europe/Saratov

+04:00

GB

Z

Mexico/General

-06:00

Pacific/Wallis

+12:00

Europe/Gibraltar

+01:00

Africa/Conakry

Z

Africa/Lubumbashi

+02:00

Asia/Istanbul

+03:00

America/Havana

-05:00

NZ-CHAT

+13:45

Asia/Choibalsan

+08:00

America/Porto_Acre

-05:00

Asia/Omsk

+06:00

Europe/Vaduz

+01:00

US/Michigan

-05:00

Asia/Dhaka

+06:00

America/Barbados

-04:00

Europe/Tiraspol

+02:00

Atlantic/Cape_Verde

-01:00

Asia/Yekaterinburg

+05:00

America/Louisville

-05:00

Pacific/Johnston

-10:00

Pacific/Chatham

+13:45

Europe/Ljubljana

+01:00

America/Sao_Paulo

-03:00

Asia/Jayapura

+09:00

America/Curacao

-04:00

Asia/Dushanbe

+05:00

America/Guyana

-04:00

America/Guayaquil

-05:00

America/Martinique

-04:00

Portugal

Z

Europe/Berlin

+01:00

Europe/Moscow

+03:00

Europe/Chisinau

+02:00

America/Puerto_Rico

-04:00

America/Rankin_Inlet

-06:00

Pacific/Ponape

+11:00

Europe/Stockholm

+01:00

Europe/Budapest

+01:00

America/Argentina/Jujuy

-03:00

Australia/Eucla

+08:45

Asia/Shanghai

+08:00

Universal

Z

Europe/Zagreb

+01:00

America/Port_of_Spain

-04:00

Europe/Helsinki

+02:00

Asia/Beirut

+02:00

Asia/Tel_Aviv

+02:00

Pacific/Bougainville

+11:00

US/Central

-06:00

Africa/Sao_Tome

Z

Indian/Chagos

+06:00

America/Cayenne

-03:00

Asia/Yakutsk

+09:00

Pacific/Galapagos

-06:00

Australia/North

+09:30

Europe/Paris

+01:00

Africa/Ndjamena

+01:00

Pacific/Fiji

+12:00

America/Rainy_River

-06:00

Indian/Maldives

+05:00

Australia/Yancowinna

+10:30

SystemV/AST4

-04:00

Asia/Oral

+05:00

America/Yellowknife

-07:00

Pacific/Enderbury

+13:00

America/Juneau

-09:00

Australia/Victoria

+11:00

America/Indiana/Vevay

-05:00

Asia/Tashkent

+05:00

Asia/Jakarta

+07:00

Africa/Ceuta

+01:00

Asia/Barnaul

+07:00

America/Recife

-03:00

America/Buenos_Aires

-03:00

America/Noronha

-02:00

America/Swift_Current

-06:00

Australia/Adelaide

+10:30

America/Metlakatla

-09:00

Africa/Djibouti

+03:00

America/Paramaribo

-03:00

Asia/Qostanay

+06:00

Europe/Simferopol

+03:00

Europe/Sofia

+02:00

Africa/Nouakchott

Z

Europe/Prague

+01:00

America/Indiana/Vincennes

-05:00

Antarctica/Mawson

+05:00

America/Kralendijk

-04:00

Antarctica/Troll

Z

Europe/Samara

+04:00

Indian/Christmas

+07:00

America/Antigua

-04:00

Pacific/Gambier

-09:00

America/Indianapolis

-05:00

America/Inuvik

-07:00

America/Iqaluit

-05:00

Pacific/Funafuti

+12:00

UTC

Z

Antarctica/Macquarie

+11:00

Canada/Pacific

-08:00

America/Moncton

-04:00

Africa/Gaborone

+02:00

Pacific/Chuuk

+10:00

Asia/Pyongyang

+09:00

America/St_Vincent

-04:00

Asia/Gaza

+02:00

Etc/Universal

Z

PST8PDT

-08:00

Atlantic/Faeroe

Z

Asia/Qyzylorda

+05:00

Canada/Newfoundland

-03:30

America/Kentucky/Louisville

-05:00

America/Yakutat

-09:00

Asia/Ho_Chi_Minh

+07:00

Antarctica/Casey

+08:00

Europe/Copenhagen

+01:00

Africa/Asmara

+03:00

Atlantic/Azores

-01:00

Europe/Vienna

+01:00

ROK

+09:00

Pacific/Pitcairn

-08:00

America/Mazatlan

-07:00

Australia/Queensland

+10:00

Pacific/Nauru

+12:00

Europe/Tirane

+01:00

Asia/Kolkata

+05:30

SystemV/MST7

-07:00

Australia/Canberra

+11:00

MET

+01:00

Australia/Broken_Hill

+10:30

Europe/Riga

+02:00

America/Dominica

-04:00

Africa/Abidjan

Z

America/Mendoza

-03:00

America/Santarem

-03:00

Kwajalein

+12:00

America/Asuncion

-03:00

Asia/Ulan_Bator

+08:00

NZ

+13:00

America/Boise

-07:00

Australia/Currie

+11:00

EST5EDT

-05:00

Pacific/Guam

+10:00

Pacific/Wake

+12:00

Atlantic/Bermuda

-04:00

America/Costa_Rica

-06:00

America/Dawson

-08:00

Asia/Chongqing

+08:00

Eire

Z

Europe/Amsterdam

+01:00

America/Indiana/Knox

-06:00

America/North_Dakota/Beulah

-06:00

Africa/Accra

Z

Atlantic/Faroe

Z

Mexico/BajaNorte

-08:00

America/Maceio

-03:00

Etc/UCT

Z

Pacific/Apia

+14:00

GMT0

Z

America/Atka

-10:00

Pacific/Niue

-11:00

Australia/Lord_Howe

+11:00

Europe/Dublin

Z

Pacific/Truk

+10:00

MST7MDT

-07:00

America/Monterrey

-06:00

America/Nassau

-05:00

America/Jamaica

-05:00

Asia/Bishkek

+06:00

America/Atikokan

-05:00

Atlantic/Stanley

-03:00

Australia/NSW

+11:00

US/Hawaii

-10:00

SystemV/CST6

-06:00

Indian/Mahe

+04:00

Asia/Aqtobe

+05:00

America/Sitka

-09:00

Asia/Vladivostok

+10:00

Africa/Libreville

+01:00

Africa/Maputo

+02:00

Zulu

Z

America/Kentucky/Monticello

-05:00

Africa/El_Aaiun

+01:00

Africa/Ouagadougou

Z

America/Coral_Harbour

-05:00

Pacific/Marquesas

-09:30

Brazil/West

-04:00

America/Aruba

-04:00

America/North_Dakota/Center

-06:00

America/Cayman

-05:00

Asia/Ulaanbaatar

+08:00

Asia/Baghdad

+03:00

Europe/San_Marino

+01:00

America/Indiana/Tell_City

-06:00

America/Tijuana

-08:00

Pacific/Saipan

+10:00

SystemV/YST9

-09:00

Africa/Douala

+01:00

America/Chihuahua

-07:00

America/Ojinaga

-07:00

Asia/Hovd

+07:00

America/Anchorage

-09:00

Chile/EasterIsland

-05:00

America/Halifax

-04:00

Antarctica/Rothera

-03:00

America/Indiana/Indianapolis

-05:00

US/Mountain

-07:00

Asia/Damascus

+02:00

America/Argentina/San_Luis

-03:00

America/Santiago

-03:00

Asia/Baku

+04:00

America/Argentina/Ushuaia

-03:00

Atlantic/Reykjavik

Z

Africa/Brazzaville

+01:00

Africa/Porto-Novo

+01:00

America/La_Paz

-04:00

Antarctica/DumontDUrville

+10:00

Asia/Taipei

+08:00

Antarctica/South_Pole

+13:00

Asia/Manila

+08:00

Asia/Bangkok

+07:00

Africa/Dar_es_Salaam

+03:00

Poland

+01:00

Atlantic/Madeira

Z

Antarctica/Palmer

-03:00

America/Thunder_Bay

-05:00

Africa/Addis_Ababa

+03:00

Asia/Yangon

+06:30

Europe/Uzhgorod

+02:00

Brazil/DeNoronha

-02:00

Asia/Ashkhabad

+05:00

Etc/Zulu

Z

America/Indiana/Marengo

-05:00

America/Creston

-07:00

America/Punta_Arenas

-03:00

America/Mexico_City

-06:00

Antarctica/Vostok

+06:00

Asia/Jerusalem

+02:00

Europe/Andorra

+01:00

US/Samoa

-11:00

PRC

+08:00

Asia/Vientiane

+07:00

Pacific/Kiritimati

+14:00

America/Matamoros

-06:00

America/Blanc-Sablon

-04:00

Asia/Riyadh

+03:00

Iceland

Z

Pacific/Pohnpei

+11:00

Asia/Ujung_Pandang

+08:00

Atlantic/South_Georgia

-02:00

Europe/Lisbon

Z

Asia/Harbin

+08:00

Europe/Oslo

+01:00

Asia/Novokuznetsk

+07:00

CST6CDT

-06:00

Atlantic/Canary

Z

America/Knox_IN

-06:00

Asia/Kuwait

+03:00

SystemV/HST10

-10:00

Pacific/Efate

+11:00

Africa/Lome

Z

America/Bogota

-05:00

America/Menominee

-06:00

America/Adak

-10:00

Pacific/Norfolk

+12:00

Europe/Kirov

+03:00

America/Resolute

-06:00

Pacific/Tarawa

+12:00

Africa/Kampala

+03:00

Asia/Krasnoyarsk

+07:00

Greenwich

Z

SystemV/EST5

-05:00

America/Edmonton

-07:00

Europe/Podgorica

+01:00

Australia/South

+10:30

Canada/Central

-06:00

Africa/Bujumbura

+02:00

America/Santo_Domingo

-04:00

US/Eastern

-05:00

Europe/Minsk

+03:00

Pacific/Auckland

+13:00

Africa/Casablanca

+01:00

America/Glace_Bay

-04:00

Canada/Eastern

-05:00

Asia/Qatar

+03:00

Europe/Kiev

+02:00

Singapore

+08:00

Asia/Magadan

+11:00

SystemV/PST8

-08:00

America/Port-au-Prince

-05:00

Europe/Belfast

Z

America/St_Barthelemy

-04:00

Asia/Ashgabat

+05:00

Africa/Luanda

+01:00

America/Nipigon

-05:00

Atlantic/Jan_Mayen

+01:00

Brazil/Acre

-05:00

Asia/Muscat

+04:00

Asia/Bahrain

+03:00

Europe/Vilnius

+02:00

America/Fortaleza

-03:00

Etc/GMT0

Z

US/East-Indiana

-05:00

America/Hermosillo

-07:00

America/Cancun

-05:00

Africa/Maseru

+02:00

Pacific/Kosrae

+11:00

Africa/Kinshasa

+01:00

Asia/Kathmandu

+05:45

Asia/Seoul

+09:00

Australia/Sydney

+11:00

America/Lima

-05:00

Australia/LHI

+11:00

America/St_Lucia

-04:00

Europe/Madrid

+01:00

America/Bahia_Banderas

-06:00

America/Montserrat

-04:00

Asia/Brunei

+08:00

America/Santa_Isabel

-08:00

Canada/Mountain

-07:00

America/Cambridge_Bay

-07:00

Asia/Colombo

+05:30

Australia/West

+08:00

Indian/Antananarivo

+03:00

Australia/Brisbane

+10:00

Indian/Mayotte

+03:00

US/Indiana-Starke

-06:00

Asia/Urumqi

+06:00

US/Aleutian

-10:00

Europe/Volgograd

+04:00

America/Lower_Princes

-04:00

America/Vancouver

-08:00

Africa/Blantyre

+02:00

America/Rio_Branco

-05:00

America/Danmarkshavn

Z

America/Detroit

-05:00

America/Thule

-04:00

Africa/Lusaka

+02:00

Asia/Hong_Kong

+08:00

Iran

+03:30

America/Argentina/La_Rioja

-03:00

Africa/Dakar

Z

SystemV/CST6CDT

-06:00

America/Tortola

-04:00

America/Porto_Velho

-04:00

Asia/Sakhalin

+11:00

Etc/GMT+10

-10:00

America/Scoresbysund

-01:00

Asia/Kamchatka

+12:00

Asia/Thimbu

+06:00

Africa/Harare

+02:00

Etc/GMT+12

-12:00

Etc/GMT+11

-11:00

Navajo

-07:00

America/Nome

-09:00

Europe/Tallinn

+02:00

Turkey

+03:00

Africa/Khartoum

+02:00

Africa/Johannesburg

+02:00

Africa/Bangui

+01:00

Europe/Belgrade

+01:00

Jamaica

-05:00

Africa/Bissau

Z

Asia/Tehran

+03:30

WET

Z

Europe/Astrakhan

+04:00

Africa/Juba

+03:00

America/Campo_Grande

-04:00

America/Belem

-03:00

Etc/Greenwich

Z

Asia/Saigon

+07:00

America/Ensenada

-08:00

Pacific/Midway

-11:00

America/Jujuy

-03:00

Africa/Timbuktu

Z

America/Bahia

-03:00

America/Goose_Bay

-04:00

America/Virgin

-04:00

America/Pangnirtung

-05:00

Asia/Katmandu

+05:45

America/Phoenix

-07:00

Africa/Niamey

+01:00

America/Whitehorse

-08:00

Pacific/Noumea

+11:00

Asia/Tbilisi

+04:00

America/Montreal

-05:00

Asia/Makassar

+08:00

America/Argentina/San_Juan

-03:00

Hongkong

+08:00

UCT

Z

Asia/Nicosia

+02:00

America/Indiana/Winamac

-05:00

SystemV/MST7MDT

-07:00

America/Argentina/ComodRivadavia

-03:00

America/Boa_Vista

-04:00

America/Grenada

-04:00

Asia/Atyrau

+05:00

Australia/Darwin

+09:30

Asia/Khandyga

+09:00

Asia/Kuala_Lumpur

+08:00

Asia/Famagusta

+02:00

Asia/Thimphu

+06:00

Asia/Rangoon

+06:30

Europe/Bratislava

+01:00

Asia/Calcutta

+05:30

America/Argentina/Tucuman

-03:00

Asia/Kabul

+04:30

Indian/Cocos

+06:30

Japan

+09:00

Pacific/Tongatapu

+13:00

America/New_York

-05:00

Etc/GMT-12

+12:00

Etc/GMT-11

+11:00

Etc/GMT-10

+10:00

SystemV/YST9YDT

-09:00

Europe/Ulyanovsk

+04:00

Etc/GMT-14

+14:00

Etc/GMT-13

+13:00

W-SU

+03:00

America/Merida

-06:00

EET

+02:00

America/Rosario

-03:00

Canada/Saskatchewan

-06:00

America/St_Kitts

-04:00

Arctic/Longyearbyen

+01:00

America/Fort_Nelson

-07:00

America/Caracas

-04:00

America/Guadeloupe

-04:00

Asia/Hebron

+02:00

Indian/Kerguelen

+05:00

SystemV/PST8PDT

-08:00

Africa/Monrovia

Z

Asia/Ust-Nera

+10:00

Egypt

+02:00

Asia/Srednekolymsk

+11:00

America/North_Dakota/New_Salem

-06:00

Asia/Anadyr

+12:00

Australia/Melbourne

+11:00

Asia/Irkutsk

+08:00

America/Shiprock

-07:00

America/Winnipeg

-06:00

Europe/Vatican

+01:00

Asia/Amman

+02:00

Etc/UTC

Z

SystemV/AST4ADT

-04:00

Asia/Tokyo

+09:00

America/Toronto

-05:00

Asia/Singapore

+08:00

Australia/Lindeman

+10:00

America/Los_Angeles

-08:00

SystemV/EST5EDT

-05:00

Pacific/Majuro

+12:00

America/Argentina/Buenos_Aires

-03:00

Europe/Nicosia

+02:00

Pacific/Guadalcanal

+11:00

Europe/Athens

+02:00

US/Pacific

-08:00

Europe/Monaco

+01:00

特别说明:本表格生成于北京时间2021-01-19 08:00:00,由于各地夏令时的存在,不同时间生成的表格UTC偏移值不尽相同

有了这个表格,本文又非常值得收藏喽。有需要的时候直接拿出来ctrl + f查一下即可,不用再进入xxx网站啦。

当然喽,个人建议还是掌握程序的计算逻辑更稳妥些,可以“动态的”获取100%正确的偏移量,因此有需要此计算逻辑的同学直接在公号后台回复“时区”二字即可获取源码内容。

总结

本文围绕时区偏移量,通过自写代码的方式输出所有城市时区ID对应的偏移量值,进一步加深对时区和偏移量,以及夏令时的了解。

这部分内容是时间处理的难点,更是重点,往往程序bug就发生在这些地方(比如我在此趟了一坑),希望能引起各位重视。

下篇文章将继续补充介绍和实战场景非常贴近:LocalDateTime、OffsetDateTime、ZonedDateTime跨时区互转,保持关注。

本文思考题

看完了不一定懂,看懂了不一定会。来,文末3个思考题帮你复盘:

  1. 偏移量Z代表什么含义?
  2. ZoneId和ZoneOffset是如何建立对应关系的?
  3. 若某个城市不在ZoneId列表里面,想要获取其UTC偏移量该怎么破?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 本文提纲
      • 版本约定
      • 正文
        • 城市ZoneId - UTC偏移量
          • 方式一:第三方站点
          • 方式二:自写程序(推荐)
        • 附:全部城市对应偏移量
        • 总结
          • 本文思考题
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档