全球城市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/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偏移量該怎麼破?

推薦閱讀

GMT UTC CST ISO 夏令時 時間戳,都是些什麼鬼?

全網最全!徹底弄透Java處理GMT/UTC日期時間

關注我

分享、成長,拒絕淺藏輒止。關注【BAT的烏托邦】回覆關鍵字專欄有Spring技術棧、中間件等小而美的純原創專欄。本文已被 https://www.yourbatman.cn 收錄。

本文所屬專欄:JDK日期時間,公號後臺回覆專欄名即可獲取全部內容。

A哥(YourBatman):Spring Framework/Boot開源貢獻者,Java架構師。非常注重基本功修養,相信底層基礎決定上層建築,堅實基礎才能煥發程序員更強生命力。文章特點爲以小而美專欄形式重構知識體系,抽絲剝繭,致力於做人人能看懂的最好的專欄系列。可加我好友(fsx1056342982)共勉哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章