In this articles, we will discuss how to get all Zones and its corresponding Offset information using ZoneId and ZoneOffset
Display all Zones and its Offset:
- Alphabetically Sorted Zones and its corresponding Offset
- Reverse-order Sorted Offset and its corresponding Zones
1. Alphabetically Sorted zones and its Offset :
- First we will use ZoneId.getAvailableZoneIds(); static method to get all available zones which returns in the form of Set<String>
- Iterate through Zones and get its corresponding Offset and store these information in HashMap with,
- Zone as Key
- Offset as Value
- Finally, sort Zones alphabetically and store it in LinkedHashMap as it will maintain insertion-order
- Pretty print Offset/Zone information to console
DisplayAllZoneIdAndOffset.java
package in.bench.resources.zoneddatetime.sorting;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class DisplayAllZoneIdAndOffset {
// main() method
public static void main(String[] args) {
// 1. Java 8 Date/Time API - All zone and offset information
System.out.println("Alphabetically Sorted Zones and its corresponding Offset :- \n");
// 2. get all Zone information using ZoneId
Set<String> zones = ZoneId.getAvailableZoneIds();
// 3. get Zone with it Offset in LinkedHashMap
Map<String, String> linkedHashMap = getZonesAndItsOffsetInMap(zones);
// 3.1 print to console
linkedHashMap.forEach((key, value) -> System.out.println(value + "\t" + key));
}
/**
* This method is used to get Zones and its Offset as Key-Value pair in LinkedHashMap
* to maintain insertion-order
*
* @param zones
* @return
*/
private static Map<String, String> getZonesAndItsOffsetInMap(Set<String> zones) {
// 1. Create HashMap object to store Zone and Offset
Map<String, String> hashMap = new HashMap<>();
// 2. Iterate all Zones and get Offset Id
for(String zone : zones) {
// 2.1 form ZoneId
ZoneId zoneId = ZoneId.of(zone);
// 2.2 form Zone Offset
ZoneOffset zoneOffset = zoneId.getRules().getOffset(LocalDateTime.now());
// 2.2 put zone and offset into hashMap
hashMap.put(zone, zoneOffset.getId().replaceAll("Z", "+00:00"));
}
// 3. Create LinkedhashMap for storing sorted values of Zones
Map<String, String> linkedHashMap = new LinkedHashMap<>();
// 3.1 Sort hashMap on the basis of Key (Zones)
hashMap // original source
.entrySet() // get entry set
.stream() // get stream
.sorted(Map.Entry.comparingByKey()) // ascending-order sorting of Zones
.forEachOrdered(c -> linkedHashMap.put(c.getKey(), c.getValue())); // maintains insertion-order
// 3.2 return linkedHashMap;
return linkedHashMap;
}
}
Output:
Alphabetically Sorted Zones and its corresponding Offset :-
+00:00 Africa/Abidjan
+00:00 Africa/Accra
+03:00 Africa/Addis_Ababa
+01:00 Africa/Algiers
+03:00 Africa/Asmara
+03:00 Africa/Asmera
+00:00 Africa/Bamako
+01:00 Africa/Bangui
+00:00 Africa/Banjul
+00:00 Africa/Bissau
+02:00 Africa/Blantyre
+01:00 Africa/Brazzaville
+02:00 Africa/Bujumbura
+02:00 Africa/Cairo
+01:00 Africa/Casablanca
+02:00 Africa/Ceuta
+00:00 Africa/Conakry
+00:00 Africa/Dakar
+03:00 Africa/Dar_es_Salaam
+03:00 Africa/Djibouti
+01:00 Africa/Douala
+01:00 Africa/El_Aaiun
+00:00 Africa/Freetown
+02:00 Africa/Gaborone
+02:00 Africa/Harare
+02:00 Africa/Johannesburg
+02:00 Africa/Juba
+03:00 Africa/Kampala
+02:00 Africa/Khartoum
+02:00 Africa/Kigali
+01:00 Africa/Kinshasa
+01:00 Africa/Lagos
+01:00 Africa/Libreville
+00:00 Africa/Lome
+01:00 Africa/Luanda
+02:00 Africa/Lubumbashi
+02:00 Africa/Lusaka
+01:00 Africa/Malabo
+02:00 Africa/Maputo
+02:00 Africa/Maseru
+02:00 Africa/Mbabane
+03:00 Africa/Mogadishu
+00:00 Africa/Monrovia
+03:00 Africa/Nairobi
+01:00 Africa/Ndjamena
+01:00 Africa/Niamey
+00:00 Africa/Nouakchott
+00:00 Africa/Ouagadougou
+01:00 Africa/Porto-Novo
+00:00 Africa/Sao_Tome
+00:00 Africa/Timbuktu
+02:00 Africa/Tripoli
+01:00 Africa/Tunis
+02:00 Africa/Windhoek
-09:00 America/Adak
-08:00 America/Anchorage
-04:00 America/Anguilla
-04:00 America/Antigua
-03:00 America/Araguaina
-03:00 America/Argentina/Buenos_Aires
-03:00 America/Argentina/Catamarca
-03:00 America/Argentina/ComodRivadavia
-03:00 America/Argentina/Cordoba
-03:00 America/Argentina/Jujuy
-03:00 America/Argentina/La_Rioja
-03:00 America/Argentina/Mendoza
-03:00 America/Argentina/Rio_Gallegos
-03:00 America/Argentina/Salta
-03:00 America/Argentina/San_Juan
-03:00 America/Argentina/San_Luis
-03:00 America/Argentina/Tucuman
-03:00 America/Argentina/Ushuaia
-04:00 America/Aruba
-04:00 America/Asuncion
-05:00 America/Atikokan
-09:00 America/Atka
-03:00 America/Bahia
-05:00 America/Bahia_Banderas
-04:00 America/Barbados
-03:00 America/Belem
-06:00 America/Belize
-04:00 America/Blanc-Sablon
-04:00 America/Boa_Vista
-05:00 America/Bogota
-06:00 America/Boise
-03:00 America/Buenos_Aires
-06:00 America/Cambridge_Bay
-04:00 America/Campo_Grande
-05:00 America/Cancun
-04:00 America/Caracas
-03:00 America/Catamarca
-03:00 America/Cayenne
-05:00 America/Cayman
-05:00 America/Chicago
-06:00 America/Chihuahua
-05:00 America/Coral_Harbour
-03:00 America/Cordoba
-06:00 America/Costa_Rica
-07:00 America/Creston
-04:00 America/Cuiaba
-04:00 America/Curacao
+00:00 America/Danmarkshavn
-07:00 America/Dawson
-07:00 America/Dawson_Creek
-06:00 America/Denver
-04:00 America/Detroit
-04:00 America/Dominica
-06:00 America/Edmonton
-05:00 America/Eirunepe
-06:00 America/El_Salvador
-07:00 America/Ensenada
-07:00 America/Fort_Nelson
-04:00 America/Fort_Wayne
-03:00 America/Fortaleza
-03:00 America/Glace_Bay
-02:00 America/Godthab
-03:00 America/Goose_Bay
-04:00 America/Grand_Turk
-04:00 America/Grenada
-04:00 America/Guadeloupe
-06:00 America/Guatemala
-05:00 America/Guayaquil
-04:00 America/Guyana
-03:00 America/Halifax
-04:00 America/Havana
-07:00 America/Hermosillo
-04:00 America/Indiana/Indianapolis
-05:00 America/Indiana/Knox
-04:00 America/Indiana/Marengo
-04:00 America/Indiana/Petersburg
-05:00 America/Indiana/Tell_City
-04:00 America/Indiana/Vevay
-04:00 America/Indiana/Vincennes
-04:00 America/Indiana/Winamac
-04:00 America/Indianapolis
-06:00 America/Inuvik
-04:00 America/Iqaluit
-05:00 America/Jamaica
-03:00 America/Jujuy
-08:00 America/Juneau
-04:00 America/Kentucky/Louisville
-04:00 America/Kentucky/Monticello
-05:00 America/Knox_IN
-04:00 America/Kralendijk
-04:00 America/La_Paz
-05:00 America/Lima
-07:00 America/Los_Angeles
-04:00 America/Louisville
-04:00 America/Lower_Princes
-03:00 America/Maceio
-06:00 America/Managua
-04:00 America/Manaus
-04:00 America/Marigot
-04:00 America/Martinique
-05:00 America/Matamoros
-06:00 America/Mazatlan
-03:00 America/Mendoza
-05:00 America/Menominee
-05:00 America/Merida
-08:00 America/Metlakatla
-05:00 America/Mexico_City
-02:00 America/Miquelon
-03:00 America/Moncton
-05:00 America/Monterrey
-03:00 America/Montevideo
-04:00 America/Montreal
-04:00 America/Montserrat
-04:00 America/Nassau
-04:00 America/New_York
-04:00 America/Nipigon
-08:00 America/Nome
-02:00 America/Noronha
-05:00 America/North_Dakota/Beulah
-05:00 America/North_Dakota/Center
-05:00 America/North_Dakota/New_Salem
-02:00 America/Nuuk
-06:00 America/Ojinaga
-05:00 America/Panama
-04:00 America/Pangnirtung
-03:00 America/Paramaribo
-07:00 America/Phoenix
-04:00 America/Port-au-Prince
-04:00 America/Port_of_Spain
-05:00 America/Porto_Acre
-04:00 America/Porto_Velho
-04:00 America/Puerto_Rico
-03:00 America/Punta_Arenas
-05:00 America/Rainy_River
-05:00 America/Rankin_Inlet
-03:00 America/Recife
-06:00 America/Regina
-05:00 America/Resolute
-05:00 America/Rio_Branco
-03:00 America/Rosario
-07:00 America/Santa_Isabel
-03:00 America/Santarem
-04:00 America/Santiago
-04:00 America/Santo_Domingo
-03:00 America/Sao_Paulo
+00:00 America/Scoresbysund
-06:00 America/Shiprock
-08:00 America/Sitka
-04:00 America/St_Barthelemy
-02:30 America/St_Johns
-04:00 America/St_Kitts
-04:00 America/St_Lucia
-04:00 America/St_Thomas
-04:00 America/St_Vincent
-06:00 America/Swift_Current
-06:00 America/Tegucigalpa
-03:00 America/Thule
-04:00 America/Thunder_Bay
-07:00 America/Tijuana
-04:00 America/Toronto
-04:00 America/Tortola
-07:00 America/Vancouver
-04:00 America/Virgin
-07:00 America/Whitehorse
-05:00 America/Winnipeg
-08:00 America/Yakutat
-06:00 America/Yellowknife
+11:00 Antarctica/Casey
+07:00 Antarctica/Davis
+10:00 Antarctica/DumontDUrville
+10:00 Antarctica/Macquarie
+05:00 Antarctica/Mawson
+12:00 Antarctica/McMurdo
-03:00 Antarctica/Palmer
-03:00 Antarctica/Rothera
+12:00 Antarctica/South_Pole
+03:00 Antarctica/Syowa
+02:00 Antarctica/Troll
+06:00 Antarctica/Vostok
+02:00 Arctic/Longyearbyen
+03:00 Asia/Aden
+06:00 Asia/Almaty
+03:00 Asia/Amman
+12:00 Asia/Anadyr
+05:00 Asia/Aqtau
+05:00 Asia/Aqtobe
+05:00 Asia/Ashgabat
+05:00 Asia/Ashkhabad
+05:00 Asia/Atyrau
+03:00 Asia/Baghdad
+03:00 Asia/Bahrain
+04:00 Asia/Baku
+07:00 Asia/Bangkok
+07:00 Asia/Barnaul
+03:00 Asia/Beirut
+06:00 Asia/Bishkek
+08:00 Asia/Brunei
+05:30 Asia/Calcutta
+09:00 Asia/Chita
+08:00 Asia/Choibalsan
+08:00 Asia/Chongqing
+08:00 Asia/Chungking
+05:30 Asia/Colombo
+06:00 Asia/Dacca
+03:00 Asia/Damascus
+06:00 Asia/Dhaka
+09:00 Asia/Dili
+04:00 Asia/Dubai
+05:00 Asia/Dushanbe
+03:00 Asia/Famagusta
+03:00 Asia/Gaza
+08:00 Asia/Harbin
+03:00 Asia/Hebron
+07:00 Asia/Ho_Chi_Minh
+08:00 Asia/Hong_Kong
+07:00 Asia/Hovd
+08:00 Asia/Irkutsk
+03:00 Asia/Istanbul
+07:00 Asia/Jakarta
+09:00 Asia/Jayapura
+03:00 Asia/Jerusalem
+04:30 Asia/Kabul
+12:00 Asia/Kamchatka
+05:00 Asia/Karachi
+06:00 Asia/Kashgar
+05:45 Asia/Kathmandu
+05:45 Asia/Katmandu
+09:00 Asia/Khandyga
+05:30 Asia/Kolkata
+07:00 Asia/Krasnoyarsk
+08:00 Asia/Kuala_Lumpur
+08:00 Asia/Kuching
+03:00 Asia/Kuwait
+08:00 Asia/Macao
+08:00 Asia/Macau
+11:00 Asia/Magadan
+08:00 Asia/Makassar
+08:00 Asia/Manila
+04:00 Asia/Muscat
+03:00 Asia/Nicosia
+07:00 Asia/Novokuznetsk
+07:00 Asia/Novosibirsk
+06:00 Asia/Omsk
+05:00 Asia/Oral
+07:00 Asia/Phnom_Penh
+07:00 Asia/Pontianak
+09:00 Asia/Pyongyang
+03:00 Asia/Qatar
+06:00 Asia/Qostanay
+05:00 Asia/Qyzylorda
+06:30 Asia/Rangoon
+03:00 Asia/Riyadh
+07:00 Asia/Saigon
+11:00 Asia/Sakhalin
+05:00 Asia/Samarkand
+09:00 Asia/Seoul
+08:00 Asia/Shanghai
+08:00 Asia/Singapore
+11:00 Asia/Srednekolymsk
+08:00 Asia/Taipei
+05:00 Asia/Tashkent
+04:00 Asia/Tbilisi
+04:30 Asia/Tehran
+03:00 Asia/Tel_Aviv
+06:00 Asia/Thimbu
+06:00 Asia/Thimphu
+09:00 Asia/Tokyo
+07:00 Asia/Tomsk
+08:00 Asia/Ujung_Pandang
+08:00 Asia/Ulaanbaatar
+08:00 Asia/Ulan_Bator
+06:00 Asia/Urumqi
+10:00 Asia/Ust-Nera
+07:00 Asia/Vientiane
+10:00 Asia/Vladivostok
+09:00 Asia/Yakutsk
+06:30 Asia/Yangon
+05:00 Asia/Yekaterinburg
+04:00 Asia/Yerevan
+00:00 Atlantic/Azores
-03:00 Atlantic/Bermuda
+01:00 Atlantic/Canary
-01:00 Atlantic/Cape_Verde
+01:00 Atlantic/Faeroe
+01:00 Atlantic/Faroe
+02:00 Atlantic/Jan_Mayen
+01:00 Atlantic/Madeira
+00:00 Atlantic/Reykjavik
-02:00 Atlantic/South_Georgia
+00:00 Atlantic/St_Helena
-03:00 Atlantic/Stanley
+10:00 Australia/ACT
+09:30 Australia/Adelaide
+10:00 Australia/Brisbane
+09:30 Australia/Broken_Hill
+10:00 Australia/Canberra
+10:00 Australia/Currie
+09:30 Australia/Darwin
+08:45 Australia/Eucla
+10:00 Australia/Hobart
+10:30 Australia/LHI
+10:00 Australia/Lindeman
+10:30 Australia/Lord_Howe
+10:00 Australia/Melbourne
+10:00 Australia/NSW
+09:30 Australia/North
+08:00 Australia/Perth
+10:00 Australia/Queensland
+09:30 Australia/South
+10:00 Australia/Sydney
+10:00 Australia/Tasmania
+10:00 Australia/Victoria
+08:00 Australia/West
+09:30 Australia/Yancowinna
-05:00 Brazil/Acre
-02:00 Brazil/DeNoronha
-03:00 Brazil/East
-04:00 Brazil/West
+02:00 CET
-05:00 CST6CDT
-03:00 Canada/Atlantic
-05:00 Canada/Central
-04:00 Canada/Eastern
-06:00 Canada/Mountain
-02:30 Canada/Newfoundland
-07:00 Canada/Pacific
-06:00 Canada/Saskatchewan
-07:00 Canada/Yukon
-04:00 Chile/Continental
-06:00 Chile/EasterIsland
-04:00 Cuba
+03:00 EET
-04:00 EST5EDT
+02:00 Egypt
+01:00 Eire
+00:00 Etc/GMT
+00:00 Etc/GMT+0
-01:00 Etc/GMT+1
-10:00 Etc/GMT+10
-11:00 Etc/GMT+11
-12:00 Etc/GMT+12
-02:00 Etc/GMT+2
-03:00 Etc/GMT+3
-04:00 Etc/GMT+4
-05:00 Etc/GMT+5
-06:00 Etc/GMT+6
-07:00 Etc/GMT+7
-08:00 Etc/GMT+8
-09:00 Etc/GMT+9
+00:00 Etc/GMT-0
+01:00 Etc/GMT-1
+10:00 Etc/GMT-10
+11:00 Etc/GMT-11
+12:00 Etc/GMT-12
+13:00 Etc/GMT-13
+14:00 Etc/GMT-14
+02:00 Etc/GMT-2
+03:00 Etc/GMT-3
+04:00 Etc/GMT-4
+05:00 Etc/GMT-5
+06:00 Etc/GMT-6
+07:00 Etc/GMT-7
+08:00 Etc/GMT-8
+09:00 Etc/GMT-9
+00:00 Etc/GMT0
+00:00 Etc/Greenwich
+00:00 Etc/UCT
+00:00 Etc/UTC
+00:00 Etc/Universal
+00:00 Etc/Zulu
+02:00 Europe/Amsterdam
+02:00 Europe/Andorra
+04:00 Europe/Astrakhan
+03:00 Europe/Athens
+01:00 Europe/Belfast
+02:00 Europe/Belgrade
+02:00 Europe/Berlin
+02:00 Europe/Bratislava
+02:00 Europe/Brussels
+03:00 Europe/Bucharest
+02:00 Europe/Budapest
+02:00 Europe/Busingen
+03:00 Europe/Chisinau
+02:00 Europe/Copenhagen
+01:00 Europe/Dublin
+02:00 Europe/Gibraltar
+01:00 Europe/Guernsey
+03:00 Europe/Helsinki
+01:00 Europe/Isle_of_Man
+03:00 Europe/Istanbul
+01:00 Europe/Jersey
+02:00 Europe/Kaliningrad
+03:00 Europe/Kiev
+03:00 Europe/Kirov
+01:00 Europe/Lisbon
+02:00 Europe/Ljubljana
+01:00 Europe/London
+02:00 Europe/Luxembourg
+02:00 Europe/Madrid
+02:00 Europe/Malta
+03:00 Europe/Mariehamn
+03:00 Europe/Minsk
+02:00 Europe/Monaco
+03:00 Europe/Moscow
+03:00 Europe/Nicosia
+02:00 Europe/Oslo
+02:00 Europe/Paris
+02:00 Europe/Podgorica
+02:00 Europe/Prague
+03:00 Europe/Riga
+02:00 Europe/Rome
+04:00 Europe/Samara
+02:00 Europe/San_Marino
+02:00 Europe/Sarajevo
+04:00 Europe/Saratov
+03:00 Europe/Simferopol
+02:00 Europe/Skopje
+03:00 Europe/Sofia
+02:00 Europe/Stockholm
+03:00 Europe/Tallinn
+02:00 Europe/Tirane
+03:00 Europe/Tiraspol
+04:00 Europe/Ulyanovsk
+03:00 Europe/Uzhgorod
+02:00 Europe/Vaduz
+02:00 Europe/Vatican
+02:00 Europe/Vienna
+03:00 Europe/Vilnius
+03:00 Europe/Volgograd
+02:00 Europe/Warsaw
+02:00 Europe/Zagreb
+03:00 Europe/Zaporozhye
+02:00 Europe/Zurich
+01:00 GB
+01:00 GB-Eire
+00:00 GMT
+00:00 GMT0
+00:00 Greenwich
+08:00 Hongkong
+00:00 Iceland
+03:00 Indian/Antananarivo
+06:00 Indian/Chagos
+07:00 Indian/Christmas
+06:30 Indian/Cocos
+03:00 Indian/Comoro
+05:00 Indian/Kerguelen
+04:00 Indian/Mahe
+05:00 Indian/Maldives
+04:00 Indian/Mauritius
+03:00 Indian/Mayotte
+04:00 Indian/Reunion
+04:30 Iran
+03:00 Israel
-05:00 Jamaica
+09:00 Japan
+12:00 Kwajalein
+02:00 Libya
+02:00 MET
-06:00 MST7MDT
-07:00 Mexico/BajaNorte
-06:00 Mexico/BajaSur
-05:00 Mexico/General
+12:00 NZ
+12:45 NZ-CHAT
-06:00 Navajo
+08:00 PRC
-07:00 PST8PDT
+13:00 Pacific/Apia
+12:00 Pacific/Auckland
+11:00 Pacific/Bougainville
+12:45 Pacific/Chatham
+10:00 Pacific/Chuuk
-06:00 Pacific/Easter
+11:00 Pacific/Efate
+13:00 Pacific/Enderbury
+13:00 Pacific/Fakaofo
+12:00 Pacific/Fiji
+12:00 Pacific/Funafuti
-06:00 Pacific/Galapagos
-09:00 Pacific/Gambier
+11:00 Pacific/Guadalcanal
+10:00 Pacific/Guam
-10:00 Pacific/Honolulu
-10:00 Pacific/Johnston
+13:00 Pacific/Kanton
+14:00 Pacific/Kiritimati
+11:00 Pacific/Kosrae
+12:00 Pacific/Kwajalein
+12:00 Pacific/Majuro
-09:30 Pacific/Marquesas
-11:00 Pacific/Midway
+12:00 Pacific/Nauru
-11:00 Pacific/Niue
+11:00 Pacific/Norfolk
+11:00 Pacific/Noumea
-11:00 Pacific/Pago_Pago
+09:00 Pacific/Palau
-08:00 Pacific/Pitcairn
+11:00 Pacific/Pohnpei
+11:00 Pacific/Ponape
+10:00 Pacific/Port_Moresby
-10:00 Pacific/Rarotonga
+10:00 Pacific/Saipan
-11:00 Pacific/Samoa
-10:00 Pacific/Tahiti
+12:00 Pacific/Tarawa
+13:00 Pacific/Tongatapu
+10:00 Pacific/Truk
+12:00 Pacific/Wake
+12:00 Pacific/Wallis
+10:00 Pacific/Yap
+02:00 Poland
+01:00 Portugal
+09:00 ROK
+08:00 Singapore
-04:00 SystemV/AST4
-03:00 SystemV/AST4ADT
-06:00 SystemV/CST6
-05:00 SystemV/CST6CDT
-05:00 SystemV/EST5
-04:00 SystemV/EST5EDT
-10:00 SystemV/HST10
-07:00 SystemV/MST7
-06:00 SystemV/MST7MDT
-08:00 SystemV/PST8
-07:00 SystemV/PST8PDT
-09:00 SystemV/YST9
-08:00 SystemV/YST9YDT
+03:00 Turkey
+00:00 UCT
-08:00 US/Alaska
-09:00 US/Aleutian
-07:00 US/Arizona
-05:00 US/Central
-04:00 US/East-Indiana
-04:00 US/Eastern
-10:00 US/Hawaii
-05:00 US/Indiana-Starke
-04:00 US/Michigan
-06:00 US/Mountain
-07:00 US/Pacific
-11:00 US/Samoa
+00:00 UTC
+00:00 Universal
+03:00 W-SU
+01:00 WET
+00:00 Zulu
2. Reverse-order Sorted Offset and its Zones :
- First we will use ZoneId.getAvailableZoneIds(); static method to get all available zones which returns in the form of Set<String>
- Iterate through Zones and get its corresponding Offset and store these information in HashMap with,
- Zone as Key
- Offset as Value
- Finally, sort Offset in reverse-order and store it in LinkedHashMap as it will maintain insertion-order
- Pretty print Offset/Zone information to console
DisplayAllZoneIdAndOffset2.java
package in.bench.resources.zoneddatetime.sorting;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class DisplayAllZoneIdAndOffset2 {
// main() method
public static void main(String[] args) {
// 1. Java 8 Date/Time API - All zone and offset information
System.out.println("Reverse-order sorted Offset and its corresponding Zones :- \n");
// 2. get all Zone information using ZoneId
Set<String> zones = ZoneId.getAvailableZoneIds();
// 3. get Zone with it Offset in LinkedHashMap
Map<String, String> linkedHashMap = getZonesAndItsOffsetInMap(zones);
// 3.1 print to console
linkedHashMap.forEach((key, value) -> System.out.println(value + "\t" + key));
}
/**
* This method is used to get Zones and its Offset as Key-Value pair in LinkedHashMap
* to maintain insertion-order
*
* @param zones
* @return
*/
private static Map<String, String> getZonesAndItsOffsetInMap(Set<String> zones) {
// 1. Create HashMap object to store Zone and Offset
Map<String, String> hashMap = new HashMap<>();
// 2. Iterate all Zones and get Offset Id
for(String zone : zones) {
// 2.1 form ZoneId
ZoneId zoneId = ZoneId.of(zone);
// 2.2 form Zone Offset
ZoneOffset zoneOffset = zoneId.getRules().getOffset(LocalDateTime.now());
// 2.2 put zone and offset into hashMap
hashMap.put(zone, zoneOffset.getId().replaceAll("Z", "+00:00"));
}
// 3. Create LinkedhashMap for storing reverse sorted values of OffSet
Map<String, String> linkedHashMap = new LinkedHashMap<>();
// 3.1 Reverse Sort hashMap on the basis of Value (Offset)
hashMap // original source
.entrySet() // get entry set
.stream() // get stream
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) // reverse-sorting of Offset
.forEachOrdered(c -> linkedHashMap.put(c.getKey(), c.getValue())); // maintains insertion-order
// 3.2 return linkedHashMap;
return linkedHashMap;
}
}
Output:
Reverse-order sorted Offset and its corresponding Zones :-
-12:00 Etc/GMT+12
-11:00 Pacific/Pago_Pago
-11:00 Pacific/Samoa
-11:00 Pacific/Niue
-11:00 US/Samoa
-11:00 Etc/GMT+11
-11:00 Pacific/Midway
-10:00 Pacific/Honolulu
-10:00 Pacific/Rarotonga
-10:00 Pacific/Tahiti
-10:00 Pacific/Johnston
-10:00 US/Hawaii
-10:00 SystemV/HST10
-10:00 Etc/GMT+10
-09:30 Pacific/Marquesas
-09:00 Etc/GMT+9
-09:00 Pacific/Gambier
-09:00 America/Atka
-09:00 SystemV/YST9
-09:00 America/Adak
-09:00 US/Aleutian
-08:00 Etc/GMT+8
-08:00 US/Alaska
-08:00 America/Juneau
-08:00 America/Metlakatla
-08:00 America/Yakutat
-08:00 Pacific/Pitcairn
-08:00 America/Sitka
-08:00 America/Anchorage
-08:00 SystemV/PST8
-08:00 America/Nome
-08:00 SystemV/YST9YDT
-07:00 Canada/Yukon
-07:00 Etc/GMT+7
-07:00 US/Arizona
-07:00 America/Dawson_Creek
-07:00 Canada/Pacific
-07:00 PST8PDT
-07:00 SystemV/MST7
-07:00 America/Dawson
-07:00 Mexico/BajaNorte
-07:00 America/Tijuana
-07:00 America/Creston
-07:00 America/Hermosillo
-07:00 America/Santa_Isabel
-07:00 America/Vancouver
-07:00 America/Ensenada
-07:00 America/Phoenix
-07:00 America/Whitehorse
-07:00 America/Fort_Nelson
-07:00 SystemV/PST8PDT
-07:00 America/Los_Angeles
-07:00 US/Pacific
-06:00 America/El_Salvador
-06:00 America/Guatemala
-06:00 America/Belize
-06:00 America/Managua
-06:00 America/Tegucigalpa
-06:00 Etc/GMT+6
-06:00 Pacific/Easter
-06:00 Mexico/BajaSur
-06:00 America/Regina
-06:00 America/Denver
-06:00 Pacific/Galapagos
-06:00 America/Yellowknife
-06:00 America/Swift_Current
-06:00 America/Inuvik
-06:00 America/Mazatlan
-06:00 America/Boise
-06:00 America/Costa_Rica
-06:00 MST7MDT
-06:00 SystemV/CST6
-06:00 America/Chihuahua
-06:00 America/Ojinaga
-06:00 Chile/EasterIsland
-06:00 US/Mountain
-06:00 America/Edmonton
-06:00 Canada/Mountain
-06:00 America/Cambridge_Bay
-06:00 Navajo
-06:00 SystemV/MST7MDT
-06:00 Canada/Saskatchewan
-06:00 America/Shiprock
-05:00 America/Panama
-05:00 America/Chicago
-05:00 America/Eirunepe
-05:00 Etc/GMT+5
-05:00 Mexico/General
-05:00 America/Porto_Acre
-05:00 America/Guayaquil
-05:00 America/Rankin_Inlet
-05:00 US/Central
-05:00 America/Rainy_River
-05:00 America/Indiana/Knox
-05:00 America/North_Dakota/Beulah
-05:00 America/Monterrey
-05:00 America/Jamaica
-05:00 America/Atikokan
-05:00 America/Coral_Harbour
-05:00 America/North_Dakota/Center
-05:00 America/Cayman
-05:00 America/Indiana/Tell_City
-05:00 America/Mexico_City
-05:00 America/Matamoros
-05:00 CST6CDT
-05:00 America/Knox_IN
-05:00 America/Bogota
-05:00 America/Menominee
-05:00 America/Resolute
-05:00 SystemV/EST5
-05:00 Canada/Central
-05:00 Brazil/Acre
-05:00 America/Cancun
-05:00 America/Lima
-05:00 America/Bahia_Banderas
-05:00 US/Indiana-Starke
-05:00 America/Rio_Branco
-05:00 SystemV/CST6CDT
-05:00 Jamaica
-05:00 America/Merida
-05:00 America/North_Dakota/New_Salem
-05:00 America/Winnipeg
-04:00 America/Cuiaba
-04:00 America/Marigot
-04:00 America/Indiana/Petersburg
-04:00 Chile/Continental
-04:00 America/Grand_Turk
-04:00 Cuba
-04:00 Etc/GMT+4
-04:00 America/Manaus
-04:00 America/Fort_Wayne
-04:00 America/St_Thomas
-04:00 America/Anguilla
-04:00 America/Havana
-04:00 US/Michigan
-04:00 America/Barbados
-04:00 America/Louisville
-04:00 America/Curacao
-04:00 America/Guyana
-04:00 America/Martinique
-04:00 America/Puerto_Rico
-04:00 America/Port_of_Spain
-04:00 SystemV/AST4
-04:00 America/Indiana/Vevay
-04:00 America/Indiana/Vincennes
-04:00 America/Kralendijk
-04:00 America/Antigua
-04:00 America/Indianapolis
-04:00 America/Iqaluit
-04:00 America/St_Vincent
-04:00 America/Kentucky/Louisville
-04:00 America/Dominica
-04:00 America/Asuncion
-04:00 EST5EDT
-04:00 America/Nassau
-04:00 America/Kentucky/Monticello
-04:00 Brazil/West
-04:00 America/Aruba
-04:00 America/Indiana/Indianapolis
-04:00 America/Santiago
-04:00 America/La_Paz
-04:00 America/Thunder_Bay
-04:00 America/Indiana/Marengo
-04:00 America/Blanc-Sablon
-04:00 America/Santo_Domingo
-04:00 US/Eastern
-04:00 Canada/Eastern
-04:00 America/Port-au-Prince
-04:00 America/St_Barthelemy
-04:00 America/Nipigon
-04:00 US/East-Indiana
-04:00 America/St_Lucia
-04:00 America/Montserrat
-04:00 America/Lower_Princes
-04:00 America/Detroit
-04:00 America/Tortola
-04:00 America/Porto_Velho
-04:00 America/Campo_Grande
-04:00 America/Virgin
-04:00 America/Pangnirtung
-04:00 America/Montreal
-04:00 America/Indiana/Winamac
-04:00 America/Boa_Vista
-04:00 America/Grenada
-04:00 America/New_York
-04:00 America/St_Kitts
-04:00 America/Caracas
-04:00 America/Guadeloupe
-04:00 America/Toronto
-04:00 SystemV/EST5EDT
-03:00 America/Argentina/Catamarca
-03:00 Canada/Atlantic
-03:00 America/Argentina/Cordoba
-03:00 America/Araguaina
-03:00 America/Argentina/Salta
-03:00 Etc/GMT+3
-03:00 America/Montevideo
-03:00 Brazil/East
-03:00 America/Argentina/Mendoza
-03:00 America/Argentina/Rio_Gallegos
-03:00 America/Catamarca
-03:00 America/Cordoba
-03:00 America/Sao_Paulo
-03:00 America/Argentina/Jujuy
-03:00 America/Cayenne
-03:00 America/Recife
-03:00 America/Buenos_Aires
-03:00 America/Paramaribo
-03:00 America/Moncton
-03:00 America/Mendoza
-03:00 America/Santarem
-03:00 Atlantic/Bermuda
-03:00 America/Maceio
-03:00 Atlantic/Stanley
-03:00 America/Halifax
-03:00 Antarctica/Rothera
-03:00 America/Argentina/San_Luis
-03:00 America/Argentina/Ushuaia
-03:00 Antarctica/Palmer
-03:00 America/Punta_Arenas
-03:00 America/Glace_Bay
-03:00 America/Fortaleza
-03:00 America/Thule
-03:00 America/Argentina/La_Rioja
-03:00 America/Belem
-03:00 America/Jujuy
-03:00 America/Bahia
-03:00 America/Goose_Bay
-03:00 America/Argentina/San_Juan
-03:00 America/Argentina/ComodRivadavia
-03:00 America/Argentina/Tucuman
-03:00 America/Rosario
-03:00 SystemV/AST4ADT
-03:00 America/Argentina/Buenos_Aires
-02:30 America/St_Johns
-02:30 Canada/Newfoundland
-02:00 America/Miquelon
-02:00 Etc/GMT+2
-02:00 America/Godthab
-02:00 America/Noronha
-02:00 Brazil/DeNoronha
-02:00 Atlantic/South_Georgia
-02:00 America/Nuuk
-01:00 Etc/GMT+1
-01:00 Atlantic/Cape_Verde
+14:00 Pacific/Kiritimati
+14:00 Etc/GMT-14
+13:00 Pacific/Fakaofo
+13:00 Pacific/Enderbury
+13:00 Pacific/Apia
+13:00 Pacific/Kanton
+13:00 Pacific/Tongatapu
+13:00 Etc/GMT-13
+12:45 NZ-CHAT
+12:45 Pacific/Chatham
+12:00 Pacific/Kwajalein
+12:00 Antarctica/McMurdo
+12:00 Pacific/Wallis
+12:00 Pacific/Fiji
+12:00 Pacific/Funafuti
+12:00 Pacific/Nauru
+12:00 Kwajalein
+12:00 NZ
+12:00 Pacific/Wake
+12:00 Antarctica/South_Pole
+12:00 Pacific/Tarawa
+12:00 Pacific/Auckland
+12:00 Asia/Kamchatka
+12:00 Etc/GMT-12
+12:00 Asia/Anadyr
+12:00 Pacific/Majuro
+11:00 Pacific/Ponape
+11:00 Pacific/Bougainville
+11:00 Antarctica/Casey
+11:00 Pacific/Pohnpei
+11:00 Pacific/Efate
+11:00 Pacific/Norfolk
+11:00 Asia/Magadan
+11:00 Pacific/Kosrae
+11:00 Asia/Sakhalin
+11:00 Pacific/Noumea
+11:00 Etc/GMT-11
+11:00 Asia/Srednekolymsk
+11:00 Pacific/Guadalcanal
+10:30 Australia/Lord_Howe
+10:30 Australia/LHI
+10:00 Australia/Hobart
+10:00 Pacific/Yap
+10:00 Australia/Tasmania
+10:00 Pacific/Port_Moresby
+10:00 Australia/ACT
+10:00 Australia/Victoria
+10:00 Antarctica/Macquarie
+10:00 Pacific/Chuuk
+10:00 Australia/Queensland
+10:00 Australia/Canberra
+10:00 Australia/Currie
+10:00 Pacific/Guam
+10:00 Pacific/Truk
+10:00 Australia/NSW
+10:00 Asia/Vladivostok
+10:00 Pacific/Saipan
+10:00 Antarctica/DumontDUrville
+10:00 Australia/Sydney
+10:00 Australia/Brisbane
+10:00 Etc/GMT-10
+10:00 Asia/Ust-Nera
+10:00 Australia/Melbourne
+10:00 Australia/Lindeman
+09:30 Australia/North
+09:30 Australia/Yancowinna
+09:30 Australia/Adelaide
+09:30 Australia/Broken_Hill
+09:30 Australia/South
+09:30 Australia/Darwin
+09:00 Etc/GMT-9
+09:00 Pacific/Palau
+09:00 Asia/Chita
+09:00 Asia/Dili
+09:00 Asia/Jayapura
+09:00 Asia/Yakutsk
+09:00 Asia/Pyongyang
+09:00 ROK
+09:00 Asia/Seoul
+09:00 Asia/Khandyga
+09:00 Japan
+09:00 Asia/Tokyo
+08:45 Australia/Eucla
+08:00 Asia/Kuching
+08:00 Asia/Chungking
+08:00 Etc/GMT-8
+08:00 Australia/Perth
+08:00 Asia/Macao
+08:00 Asia/Macau
+08:00 Asia/Choibalsan
+08:00 Asia/Shanghai
+08:00 Asia/Ulan_Bator
+08:00 Asia/Chongqing
+08:00 Asia/Ulaanbaatar
+08:00 Asia/Taipei
+08:00 Asia/Manila
+08:00 PRC
+08:00 Asia/Ujung_Pandang
+08:00 Asia/Harbin
+08:00 Singapore
+08:00 Asia/Brunei
+08:00 Australia/West
+08:00 Asia/Hong_Kong
+08:00 Asia/Makassar
+08:00 Hongkong
+08:00 Asia/Kuala_Lumpur
+08:00 Asia/Irkutsk
+08:00 Asia/Singapore
+07:00 Asia/Pontianak
+07:00 Etc/GMT-7
+07:00 Asia/Phnom_Penh
+07:00 Asia/Novosibirsk
+07:00 Antarctica/Davis
+07:00 Asia/Tomsk
+07:00 Asia/Jakarta
+07:00 Asia/Barnaul
+07:00 Indian/Christmas
+07:00 Asia/Ho_Chi_Minh
+07:00 Asia/Hovd
+07:00 Asia/Bangkok
+07:00 Asia/Vientiane
+07:00 Asia/Novokuznetsk
+07:00 Asia/Krasnoyarsk
+07:00 Asia/Saigon
+06:30 Asia/Yangon
+06:30 Asia/Rangoon
+06:30 Indian/Cocos
+06:00 Asia/Kashgar
+06:00 Etc/GMT-6
+06:00 Asia/Almaty
+06:00 Asia/Dacca
+06:00 Asia/Omsk
+06:00 Asia/Dhaka
+06:00 Indian/Chagos
+06:00 Asia/Qostanay
+06:00 Asia/Bishkek
+06:00 Antarctica/Vostok
+06:00 Asia/Urumqi
+06:00 Asia/Thimbu
+06:00 Asia/Thimphu
+05:45 Asia/Kathmandu
+05:45 Asia/Katmandu
+05:30 Asia/Kolkata
+05:30 Asia/Colombo
+05:30 Asia/Calcutta
+05:00 Asia/Aqtau
+05:00 Etc/GMT-5
+05:00 Asia/Samarkand
+05:00 Asia/Karachi
+05:00 Asia/Yekaterinburg
+05:00 Asia/Dushanbe
+05:00 Indian/Maldives
+05:00 Asia/Oral
+05:00 Asia/Tashkent
+05:00 Antarctica/Mawson
+05:00 Asia/Qyzylorda
+05:00 Asia/Aqtobe
+05:00 Asia/Ashkhabad
+05:00 Asia/Ashgabat
+05:00 Asia/Atyrau
+05:00 Indian/Kerguelen
+04:30 Iran
+04:30 Asia/Tehran
+04:30 Asia/Kabul
+04:00 Asia/Yerevan
+04:00 Etc/GMT-4
+04:00 Asia/Dubai
+04:00 Indian/Reunion
+04:00 Indian/Mauritius
+04:00 Europe/Saratov
+04:00 Europe/Samara
+04:00 Indian/Mahe
+04:00 Asia/Baku
+04:00 Asia/Muscat
+04:00 Europe/Astrakhan
+04:00 Asia/Tbilisi
+04:00 Europe/Ulyanovsk
+03:00 Asia/Aden
+03:00 Africa/Nairobi
+03:00 Europe/Istanbul
+03:00 Etc/GMT-3
+03:00 Europe/Zaporozhye
+03:00 Israel
+03:00 Indian/Comoro
+03:00 Antarctica/Syowa
+03:00 Africa/Mogadishu
+03:00 Europe/Bucharest
+03:00 Africa/Asmera
+03:00 Europe/Mariehamn
+03:00 Asia/Istanbul
+03:00 Europe/Tiraspol
+03:00 Europe/Moscow
+03:00 Europe/Chisinau
+03:00 Europe/Helsinki
+03:00 Asia/Beirut
+03:00 Asia/Tel_Aviv
+03:00 Africa/Djibouti
+03:00 Europe/Simferopol
+03:00 Europe/Sofia
+03:00 Asia/Gaza
+03:00 Africa/Asmara
+03:00 Europe/Riga
+03:00 Asia/Baghdad
+03:00 Asia/Damascus
+03:00 Africa/Dar_es_Salaam
+03:00 Africa/Addis_Ababa
+03:00 Europe/Uzhgorod
+03:00 Asia/Jerusalem
+03:00 Asia/Riyadh
+03:00 Asia/Kuwait
+03:00 Europe/Kirov
+03:00 Africa/Kampala
+03:00 Europe/Minsk
+03:00 Asia/Qatar
+03:00 Europe/Kiev
+03:00 Asia/Bahrain
+03:00 Europe/Vilnius
+03:00 Indian/Antananarivo
+03:00 Indian/Mayotte
+03:00 Europe/Volgograd
+03:00 Europe/Tallinn
+03:00 Turkey
+03:00 Asia/Nicosia
+03:00 Asia/Famagusta
+03:00 W-SU
+03:00 EET
+03:00 Asia/Hebron
+03:00 Asia/Amman
+03:00 Europe/Nicosia
+03:00 Europe/Athens
+02:00 Africa/Cairo
+02:00 Africa/Mbabane
+02:00 Europe/Brussels
+02:00 Europe/Warsaw
+02:00 CET
+02:00 Europe/Luxembourg
+02:00 Etc/GMT-2
+02:00 Libya
+02:00 Africa/Kigali
+02:00 Africa/Tripoli
+02:00 Europe/Kaliningrad
+02:00 Africa/Windhoek
+02:00 Europe/Malta
+02:00 Europe/Busingen
+02:00 Europe/Skopje
+02:00 Europe/Sarajevo
+02:00 Europe/Rome
+02:00 Europe/Zurich
+02:00 Europe/Gibraltar
+02:00 Africa/Lubumbashi
+02:00 Europe/Vaduz
+02:00 Europe/Ljubljana
+02:00 Europe/Berlin
+02:00 Europe/Stockholm
+02:00 Europe/Budapest
+02:00 Europe/Zagreb
+02:00 Europe/Paris
+02:00 Africa/Ceuta
+02:00 Europe/Prague
+02:00 Antarctica/Troll
+02:00 Africa/Gaborone
+02:00 Europe/Copenhagen
+02:00 Europe/Vienna
+02:00 Europe/Tirane
+02:00 MET
+02:00 Europe/Amsterdam
+02:00 Africa/Maputo
+02:00 Europe/San_Marino
+02:00 Poland
+02:00 Europe/Andorra
+02:00 Europe/Oslo
+02:00 Europe/Podgorica
+02:00 Africa/Bujumbura
+02:00 Atlantic/Jan_Mayen
+02:00 Africa/Maseru
+02:00 Europe/Madrid
+02:00 Africa/Blantyre
+02:00 Africa/Lusaka
+02:00 Africa/Harare
+02:00 Africa/Khartoum
+02:00 Africa/Johannesburg
+02:00 Europe/Belgrade
+02:00 Africa/Juba
+02:00 Europe/Bratislava
+02:00 Arctic/Longyearbyen
+02:00 Egypt
+02:00 Europe/Vatican
+02:00 Europe/Monaco
+01:00 Europe/London
+01:00 Etc/GMT-1
+01:00 Europe/Jersey
+01:00 Europe/Guernsey
+01:00 Europe/Isle_of_Man
+01:00 Africa/Tunis
+01:00 Africa/Malabo
+01:00 GB-Eire
+01:00 Africa/Lagos
+01:00 Africa/Algiers
+01:00 GB
+01:00 Portugal
+01:00 Africa/Ndjamena
+01:00 Atlantic/Faeroe
+01:00 Eire
+01:00 Atlantic/Faroe
+01:00 Europe/Dublin
+01:00 Africa/Libreville
+01:00 Africa/El_Aaiun
+01:00 Africa/Douala
+01:00 Africa/Brazzaville
+01:00 Africa/Porto-Novo
+01:00 Atlantic/Madeira
+01:00 Europe/Lisbon
+01:00 Atlantic/Canary
+01:00 Africa/Casablanca
+01:00 Europe/Belfast
+01:00 Africa/Luanda
+01:00 Africa/Kinshasa
+01:00 Africa/Bangui
+01:00 WET
+01:00 Africa/Niamey
+00:00 GMT
+00:00 Etc/GMT-0
+00:00 Atlantic/St_Helena
+00:00 Etc/GMT+0
+00:00 Africa/Banjul
+00:00 Etc/GMT
+00:00 Africa/Freetown
+00:00 Africa/Bamako
+00:00 Africa/Conakry
+00:00 Universal
+00:00 Africa/Sao_Tome
+00:00 Africa/Nouakchott
+00:00 UTC
+00:00 Etc/Universal
+00:00 Atlantic/Azores
+00:00 Africa/Abidjan
+00:00 Africa/Accra
+00:00 Etc/UCT
+00:00 GMT0
+00:00 Zulu
+00:00 Africa/Ouagadougou
+00:00 Atlantic/Reykjavik
+00:00 Etc/Zulu
+00:00 Iceland
+00:00 Africa/Lome
+00:00 Greenwich
+00:00 Etc/GMT0
+00:00 America/Danmarkshavn
+00:00 Africa/Dakar
+00:00 America/Scoresbysund
+00:00 Africa/Bissau
+00:00 Etc/Greenwich
+00:00 Africa/Timbuktu
+00:00 UCT
+00:00 Africa/Monrovia
+00:00 Etc/UTC
Q) How to form/get ZonedDateTime using ZoneId & ZoneOffset ?
- Check Java 8 – ZonedDateTime with method details and examples for more details
Related Articles:
- Java 8 – LocalDate with method details and examples
- Java 8 – LocalTime with method details and examples
- Java 8 – LocalDateTime with method details and examples
- Java 8 – ZonedDateTime with method details and examples
- Java 8 – How to sort List by java.util.Date in different ways
- Java 8 – How to sort List by java.time.LocalDate in different ways
- Java 8 – How to sort List by java.time.LocalDateTime in different ways
References:
- https://docs.oracle.com/javase/7/docs/api/java/util/Date.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
- https://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html
- https://docs.oracle.com/javase/7/docs/api/java/sql/Time.html
- https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
- https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html
- https://docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html
- https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
Happy Coding !!
Happy Learning !!