写点什么

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

用户头像
YourBatman
关注
发布于: 2021 年 01 月 22 日
全球城市ZoneId和UTC时间偏移量的最全对照表

你好,我是 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:

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 偏移量地区,毕竟格林威治在那,它是世界的“时间中心”。


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

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"));}
复制代码

运行程序,输出:

北京时间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/IsleofMan | 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/PortofSpain | -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/HoChiMinh | +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/DaresSalaam | +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/NorthDakota/NewSalem | -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 偏移量该怎么破?


推荐阅读

GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?


全网最全!彻底弄透Java处理GMT/UTC日期时间


关注我

分享、成长,拒绝浅藏辄止。关注【BAT 的乌托邦】回复关键字专栏有 Spring 技术栈、中间件等小而美的纯原创专栏。本文已被 https://www.yourbatman.cn 收录。


本文所属专栏:JDK 日期时间,公号后台回复专栏名即可获取全部内容。


A 哥(YourBatman):Spring Framework/Boot 开源贡献者,Java 架构师。非常注重基本功修养,相信底层基础决定上层建筑,坚实基础才能焕发程序员更强生命力。文章特点为以小而美专栏形式重构知识体系,抽丝剥茧,致力于做人人能看懂的最好的专栏系列。可加我好友(fsx1056342982)共勉哦!



发布于: 2021 年 01 月 22 日阅读数: 19
用户头像

YourBatman

关注

分享、成长,拒绝浅尝辄止。 2018.01.21 加入

分享、成长,拒绝浅尝辄止。公众号:BAT的乌托邦

评论

发布
暂无评论
全球城市ZoneId和UTC时间偏移量的最全对照表