Main Tutorials

Java – Display all ZoneId and its UTC offset

A Java 8 example to display all the ZoneId and its OffSet hours and minutes.

P.S Tested with Java 8 and 12

1. Display ZoneId and Offset

DisplayZoneAndOffSet.java

package com.mkyong;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class DisplayZoneAndOffSet {

    public static final boolean SORT_BY_REGION = false;

    public static void main(String[] argv) {

        Map<String, String> sortedMap = new LinkedHashMap<>();

        Map<String, String> allZoneIdsAndItsOffSet = getAllZoneIdsAndItsOffSet();

        //sort map by key
        if (SORT_BY_REGION) {
            allZoneIdsAndItsOffSet.entrySet().stream()
                    .sorted(Map.Entry.comparingByKey())
                    .forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue()));
        } else {
            // sort by value, descending order
            allZoneIdsAndItsOffSet.entrySet().stream()
                    .sorted(Map.Entry.<String, String>comparingByValue().reversed())
                    .forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue()));
        }

        // print map
        sortedMap.forEach((k, v) ->
        {
            String out = String.format("%35s (UTC%s) %n", k, v);
            System.out.printf(out);
        });

        System.out.println("\nTotal Zone IDs " + sortedMap.size());

    }

    private static Map<String, String> getAllZoneIdsAndItsOffSet() {

        Map<String, String> result = new HashMap<>();

        LocalDateTime localDateTime = LocalDateTime.now();

        for (String zoneId : ZoneId.getAvailableZoneIds()) {

            ZoneId id = ZoneId.of(zoneId);

            // LocalDateTime -> ZonedDateTime
            ZonedDateTime zonedDateTime = localDateTime.atZone(id);

            // ZonedDateTime -> ZoneOffset
            ZoneOffset zoneOffset = zonedDateTime.getOffset();

            //replace Z to +00:00
            String offset = zoneOffset.getId().replaceAll("Z", "+00:00");

            result.put(id.toString(), offset);

        }

        return result;

    }

}

Output



                         Etc/GMT+12 (UTC-12:00) 
                  Pacific/Pago_Pago (UTC-11:00) 
                      Pacific/Samoa (UTC-11:00) 
                       Pacific/Niue (UTC-11:00) 
                           US/Samoa (UTC-11:00) 
                         Etc/GMT+11 (UTC-11:00) 
                     Pacific/Midway (UTC-11:00) 
                   Pacific/Honolulu (UTC-10:00) 
                  Pacific/Rarotonga (UTC-10:00) 
                     Pacific/Tahiti (UTC-10:00) 
                   Pacific/Johnston (UTC-10:00) 
                          US/Hawaii (UTC-10:00) 
                      SystemV/HST10 (UTC-10:00) 
                         Etc/GMT+10 (UTC-10:00) 
                  Pacific/Marquesas (UTC-09:30) 
                          Etc/GMT+9 (UTC-09:00) 
                    Pacific/Gambier (UTC-09:00) 
                       America/Atka (UTC-09:00) 
                       SystemV/YST9 (UTC-09:00) 
                       America/Adak (UTC-09:00) 
                        US/Aleutian (UTC-09:00) 
                          Etc/GMT+8 (UTC-08:00) 
                          US/Alaska (UTC-08:00) 
                     America/Juneau (UTC-08:00) 
                 America/Metlakatla (UTC-08:00) 
                    America/Yakutat (UTC-08:00) 
                   Pacific/Pitcairn (UTC-08:00) 
                      America/Sitka (UTC-08:00) 
                  America/Anchorage (UTC-08:00) 
                       SystemV/PST8 (UTC-08:00) 
                       America/Nome (UTC-08:00) 
                    SystemV/YST9YDT (UTC-08:00) 
                       Canada/Yukon (UTC-07:00) 
                     US/Pacific-New (UTC-07:00) 
                          Etc/GMT+7 (UTC-07:00) 
                         US/Arizona (UTC-07:00) 
               America/Dawson_Creek (UTC-07:00) 
                     Canada/Pacific (UTC-07:00) 
                            PST8PDT (UTC-07:00) 
                       SystemV/MST7 (UTC-07:00) 
                     America/Dawson (UTC-07:00) 
                   Mexico/BajaNorte (UTC-07:00) 
                    America/Tijuana (UTC-07:00) 
                    America/Creston (UTC-07:00) 
                 America/Hermosillo (UTC-07:00) 
               America/Santa_Isabel (UTC-07:00) 
                  America/Vancouver (UTC-07:00) 
                   America/Ensenada (UTC-07:00) 
                    America/Phoenix (UTC-07:00) 
                 America/Whitehorse (UTC-07:00) 
                America/Fort_Nelson (UTC-07:00) 
                    SystemV/PST8PDT (UTC-07:00) 
                America/Los_Angeles (UTC-07:00) 
                         US/Pacific (UTC-07:00) 
                America/El_Salvador (UTC-06:00) 
                  America/Guatemala (UTC-06:00) 
                     America/Belize (UTC-06:00) 
                    America/Managua (UTC-06:00) 
                America/Tegucigalpa (UTC-06:00) 
                          Etc/GMT+6 (UTC-06:00) 
                     Pacific/Easter (UTC-06:00) 
                     Mexico/BajaSur (UTC-06:00) 
                     America/Regina (UTC-06:00) 
                     America/Denver (UTC-06:00) 
                  Pacific/Galapagos (UTC-06:00) 
                America/Yellowknife (UTC-06:00) 
              America/Swift_Current (UTC-06:00) 
                     America/Inuvik (UTC-06:00) 
                   America/Mazatlan (UTC-06:00) 
                      America/Boise (UTC-06:00) 
                 America/Costa_Rica (UTC-06:00) 
                            MST7MDT (UTC-06:00) 
                       SystemV/CST6 (UTC-06:00) 
                  America/Chihuahua (UTC-06:00) 
                    America/Ojinaga (UTC-06:00) 
                 Chile/EasterIsland (UTC-06:00) 
                        US/Mountain (UTC-06:00) 
                   America/Edmonton (UTC-06:00) 
                    Canada/Mountain (UTC-06:00) 
              America/Cambridge_Bay (UTC-06:00) 
                             Navajo (UTC-06:00) 
                    SystemV/MST7MDT (UTC-06:00) 
                Canada/Saskatchewan (UTC-06:00) 
                   America/Shiprock (UTC-06:00) 
                     America/Panama (UTC-05:00) 
                    America/Chicago (UTC-05:00) 
                   America/Eirunepe (UTC-05:00) 
                          Etc/GMT+5 (UTC-05:00) 
                     Mexico/General (UTC-05:00) 
                 America/Porto_Acre (UTC-05:00) 
                  America/Guayaquil (UTC-05:00) 
               America/Rankin_Inlet (UTC-05:00) 
                         US/Central (UTC-05:00) 
                America/Rainy_River (UTC-05:00) 
               America/Indiana/Knox (UTC-05:00) 
        America/North_Dakota/Beulah (UTC-05:00) 
                  America/Monterrey (UTC-05:00) 
                    America/Jamaica (UTC-05:00) 
                   America/Atikokan (UTC-05:00) 
              America/Coral_Harbour (UTC-05:00) 
        America/North_Dakota/Center (UTC-05:00) 
                     America/Cayman (UTC-05:00) 
          America/Indiana/Tell_City (UTC-05:00) 
                America/Mexico_City (UTC-05:00) 
                  America/Matamoros (UTC-05:00) 
                            CST6CDT (UTC-05:00) 
                    America/Knox_IN (UTC-05:00) 
                     America/Bogota (UTC-05:00) 
                  America/Menominee (UTC-05:00) 
                   America/Resolute (UTC-05:00) 
                       SystemV/EST5 (UTC-05:00) 
                     Canada/Central (UTC-05:00) 
                        Brazil/Acre (UTC-05:00) 
                     America/Cancun (UTC-05:00) 
                       America/Lima (UTC-05:00) 
             America/Bahia_Banderas (UTC-05:00) 
                  US/Indiana-Starke (UTC-05:00) 
                 America/Rio_Branco (UTC-05:00) 
                    SystemV/CST6CDT (UTC-05:00) 
                            Jamaica (UTC-05:00) 
                     America/Merida (UTC-05:00) 
     America/North_Dakota/New_Salem (UTC-05:00) 
                   America/Winnipeg (UTC-05:00) 
                     America/Cuiaba (UTC-04:00) 
                    America/Marigot (UTC-04:00) 
         America/Indiana/Petersburg (UTC-04:00) 
                  Chile/Continental (UTC-04:00) 
                 America/Grand_Turk (UTC-04:00) 
                               Cuba (UTC-04:00) 
                          Etc/GMT+4 (UTC-04:00) 
                     America/Manaus (UTC-04:00) 
                 America/Fort_Wayne (UTC-04:00) 
                  America/St_Thomas (UTC-04:00) 
                   America/Anguilla (UTC-04:00) 
                     America/Havana (UTC-04:00) 
                        US/Michigan (UTC-04:00) 
                   America/Barbados (UTC-04:00) 
                 America/Louisville (UTC-04:00) 
                    America/Curacao (UTC-04:00) 
                     America/Guyana (UTC-04:00) 
                 America/Martinique (UTC-04:00) 
                America/Puerto_Rico (UTC-04:00) 
              America/Port_of_Spain (UTC-04:00) 
                       SystemV/AST4 (UTC-04:00) 
              America/Indiana/Vevay (UTC-04:00) 
          America/Indiana/Vincennes (UTC-04:00) 
                 America/Kralendijk (UTC-04:00) 
                    America/Antigua (UTC-04:00) 
               America/Indianapolis (UTC-04:00) 
                    America/Iqaluit (UTC-04:00) 
                 America/St_Vincent (UTC-04:00) 
        America/Kentucky/Louisville (UTC-04:00) 
                   America/Dominica (UTC-04:00) 
                   America/Asuncion (UTC-04:00) 
                            EST5EDT (UTC-04:00) 
                     America/Nassau (UTC-04:00) 
        America/Kentucky/Monticello (UTC-04:00) 
                        Brazil/West (UTC-04:00) 
                      America/Aruba (UTC-04:00) 
       America/Indiana/Indianapolis (UTC-04:00) 
                   America/Santiago (UTC-04:00) 
                     America/La_Paz (UTC-04:00) 
                America/Thunder_Bay (UTC-04:00) 
            America/Indiana/Marengo (UTC-04:00) 
               America/Blanc-Sablon (UTC-04:00) 
              America/Santo_Domingo (UTC-04:00) 
                         US/Eastern (UTC-04:00) 
                     Canada/Eastern (UTC-04:00) 
             America/Port-au-Prince (UTC-04:00) 
              America/St_Barthelemy (UTC-04:00) 
                    America/Nipigon (UTC-04:00) 
                    US/East-Indiana (UTC-04:00) 
                   America/St_Lucia (UTC-04:00) 
                 America/Montserrat (UTC-04:00) 
              America/Lower_Princes (UTC-04:00) 
                    America/Detroit (UTC-04:00) 
                    America/Tortola (UTC-04:00) 
                America/Porto_Velho (UTC-04:00) 
               America/Campo_Grande (UTC-04:00) 
                     America/Virgin (UTC-04:00) 
                America/Pangnirtung (UTC-04:00) 
                   America/Montreal (UTC-04:00) 
            America/Indiana/Winamac (UTC-04:00) 
                  America/Boa_Vista (UTC-04:00) 
                    America/Grenada (UTC-04:00) 
                   America/New_York (UTC-04:00) 
                   America/St_Kitts (UTC-04:00) 
                    America/Caracas (UTC-04:00) 
                 America/Guadeloupe (UTC-04:00) 
                    America/Toronto (UTC-04:00) 
                    SystemV/EST5EDT (UTC-04:00) 
        America/Argentina/Catamarca (UTC-03:00) 
                    Canada/Atlantic (UTC-03:00) 
          America/Argentina/Cordoba (UTC-03:00) 
                  America/Araguaina (UTC-03:00) 
            America/Argentina/Salta (UTC-03:00) 
                          Etc/GMT+3 (UTC-03:00) 
                 America/Montevideo (UTC-03:00) 
                        Brazil/East (UTC-03:00) 
          America/Argentina/Mendoza (UTC-03:00) 
     America/Argentina/Rio_Gallegos (UTC-03:00) 
                  America/Catamarca (UTC-03:00) 
                    America/Cordoba (UTC-03:00) 
                  America/Sao_Paulo (UTC-03:00) 
            America/Argentina/Jujuy (UTC-03:00) 
                    America/Cayenne (UTC-03:00) 
                     America/Recife (UTC-03:00) 
               America/Buenos_Aires (UTC-03:00) 
                 America/Paramaribo (UTC-03:00) 
                    America/Moncton (UTC-03:00) 
                    America/Mendoza (UTC-03:00) 
                   America/Santarem (UTC-03:00) 
                   Atlantic/Bermuda (UTC-03:00) 
                     America/Maceio (UTC-03:00) 
                   Atlantic/Stanley (UTC-03:00) 
                    America/Halifax (UTC-03:00) 
                 Antarctica/Rothera (UTC-03:00) 
         America/Argentina/San_Luis (UTC-03:00) 
          America/Argentina/Ushuaia (UTC-03:00) 
                  Antarctica/Palmer (UTC-03:00) 
               America/Punta_Arenas (UTC-03:00) 
                  America/Glace_Bay (UTC-03:00) 
                  America/Fortaleza (UTC-03:00) 
                      America/Thule (UTC-03:00) 
         America/Argentina/La_Rioja (UTC-03:00) 
                      America/Belem (UTC-03:00) 
                      America/Jujuy (UTC-03:00) 
                      America/Bahia (UTC-03:00) 
                  America/Goose_Bay (UTC-03:00) 
         America/Argentina/San_Juan (UTC-03:00) 
   America/Argentina/ComodRivadavia (UTC-03:00) 
          America/Argentina/Tucuman (UTC-03:00) 
                    America/Rosario (UTC-03:00) 
                    SystemV/AST4ADT (UTC-03:00) 
     America/Argentina/Buenos_Aires (UTC-03:00) 
                   America/St_Johns (UTC-02:30) 
                Canada/Newfoundland (UTC-02:30) 
                   America/Miquelon (UTC-02:00) 
                          Etc/GMT+2 (UTC-02:00) 
                    America/Godthab (UTC-02:00) 
                    America/Noronha (UTC-02:00) 
                   Brazil/DeNoronha (UTC-02:00) 
             Atlantic/South_Georgia (UTC-02:00) 
                          Etc/GMT+1 (UTC-01:00) 
                Atlantic/Cape_Verde (UTC-01:00) 
                 Pacific/Kiritimati (UTC+14:00) 
                         Etc/GMT-14 (UTC+14:00) 
                    Pacific/Fakaofo (UTC+13:00) 
                  Pacific/Enderbury (UTC+13:00) 
                       Pacific/Apia (UTC+13:00) 
                  Pacific/Tongatapu (UTC+13:00) 
                         Etc/GMT-13 (UTC+13:00) 
                            NZ-CHAT (UTC+12:45) 
                    Pacific/Chatham (UTC+12:45) 
                  Pacific/Kwajalein (UTC+12:00) 
                 Antarctica/McMurdo (UTC+12:00) 
                     Pacific/Wallis (UTC+12:00) 
                       Pacific/Fiji (UTC+12:00) 
                   Pacific/Funafuti (UTC+12:00) 
                      Pacific/Nauru (UTC+12:00) 
                          Kwajalein (UTC+12:00) 
                                 NZ (UTC+12:00) 
                       Pacific/Wake (UTC+12:00) 
              Antarctica/South_Pole (UTC+12:00) 
                     Pacific/Tarawa (UTC+12:00) 
                   Pacific/Auckland (UTC+12:00) 
                     Asia/Kamchatka (UTC+12:00) 
                         Etc/GMT-12 (UTC+12:00) 
                        Asia/Anadyr (UTC+12:00) 
                     Pacific/Majuro (UTC+12:00) 
                     Pacific/Ponape (UTC+11:00) 
               Pacific/Bougainville (UTC+11:00) 
               Antarctica/Macquarie (UTC+11:00) 
                    Pacific/Pohnpei (UTC+11:00) 
                      Pacific/Efate (UTC+11:00) 
                    Pacific/Norfolk (UTC+11:00) 
                       Asia/Magadan (UTC+11:00) 
                     Pacific/Kosrae (UTC+11:00) 
                      Asia/Sakhalin (UTC+11:00) 
                     Pacific/Noumea (UTC+11:00) 
                         Etc/GMT-11 (UTC+11:00) 
                 Asia/Srednekolymsk (UTC+11:00) 
                Pacific/Guadalcanal (UTC+11:00) 
                Australia/Lord_Howe (UTC+10:30) 
                      Australia/LHI (UTC+10:30) 
                   Australia/Hobart (UTC+10:00) 
                        Pacific/Yap (UTC+10:00) 
                 Australia/Tasmania (UTC+10:00) 
               Pacific/Port_Moresby (UTC+10:00) 
                      Australia/ACT (UTC+10:00) 
                 Australia/Victoria (UTC+10:00) 
                      Pacific/Chuuk (UTC+10:00) 
               Australia/Queensland (UTC+10:00) 
                 Australia/Canberra (UTC+10:00) 
                   Australia/Currie (UTC+10:00) 
                       Pacific/Guam (UTC+10:00) 
                       Pacific/Truk (UTC+10:00) 
                      Australia/NSW (UTC+10:00) 
                   Asia/Vladivostok (UTC+10:00) 
                     Pacific/Saipan (UTC+10:00) 
          Antarctica/DumontDUrville (UTC+10:00) 
                   Australia/Sydney (UTC+10:00) 
                 Australia/Brisbane (UTC+10:00) 
                         Etc/GMT-10 (UTC+10:00) 
                      Asia/Ust-Nera (UTC+10:00) 
                Australia/Melbourne (UTC+10:00) 
                 Australia/Lindeman (UTC+10:00) 
                    Australia/North (UTC+09:30) 
               Australia/Yancowinna (UTC+09:30) 
                 Australia/Adelaide (UTC+09:30) 
              Australia/Broken_Hill (UTC+09:30) 
                    Australia/South (UTC+09:30) 
                   Australia/Darwin (UTC+09:30) 
                          Etc/GMT-9 (UTC+09:00) 
                      Pacific/Palau (UTC+09:00) 
                         Asia/Chita (UTC+09:00) 
                          Asia/Dili (UTC+09:00) 
                      Asia/Jayapura (UTC+09:00) 
                       Asia/Yakutsk (UTC+09:00) 
                     Asia/Pyongyang (UTC+09:00) 
                                ROK (UTC+09:00) 
                         Asia/Seoul (UTC+09:00) 
                      Asia/Khandyga (UTC+09:00) 
                              Japan (UTC+09:00) 
                         Asia/Tokyo (UTC+09:00) 
                    Australia/Eucla (UTC+08:45) 
                       Asia/Kuching (UTC+08:00) 
                     Asia/Chungking (UTC+08:00) 
                          Etc/GMT-8 (UTC+08:00) 
                    Australia/Perth (UTC+08:00) 
                         Asia/Macao (UTC+08:00) 
                         Asia/Macau (UTC+08:00) 
                    Asia/Choibalsan (UTC+08:00) 
                      Asia/Shanghai (UTC+08:00) 
                   Antarctica/Casey (UTC+08:00) 
                    Asia/Ulan_Bator (UTC+08:00) 
                     Asia/Chongqing (UTC+08:00) 
                   Asia/Ulaanbaatar (UTC+08:00) 
                        Asia/Taipei (UTC+08:00) 
                        Asia/Manila (UTC+08:00) 
                                PRC (UTC+08:00) 
                 Asia/Ujung_Pandang (UTC+08:00) 
                        Asia/Harbin (UTC+08:00) 
                          Singapore (UTC+08:00) 
                        Asia/Brunei (UTC+08:00) 
                     Australia/West (UTC+08:00) 
                     Asia/Hong_Kong (UTC+08:00) 
                      Asia/Makassar (UTC+08:00) 
                           Hongkong (UTC+08:00) 
                  Asia/Kuala_Lumpur (UTC+08:00) 
                       Asia/Irkutsk (UTC+08:00) 
                     Asia/Singapore (UTC+08:00) 
                     Asia/Pontianak (UTC+07:00) 
                          Etc/GMT-7 (UTC+07:00) 
                    Asia/Phnom_Penh (UTC+07:00) 
                   Asia/Novosibirsk (UTC+07:00) 
                   Antarctica/Davis (UTC+07:00) 
                         Asia/Tomsk (UTC+07:00) 
                       Asia/Jakarta (UTC+07:00) 
                       Asia/Barnaul (UTC+07:00) 
                   Indian/Christmas (UTC+07:00) 
                   Asia/Ho_Chi_Minh (UTC+07:00) 
                          Asia/Hovd (UTC+07:00) 
                       Asia/Bangkok (UTC+07:00) 
                     Asia/Vientiane (UTC+07:00) 
                  Asia/Novokuznetsk (UTC+07:00) 
                   Asia/Krasnoyarsk (UTC+07:00) 
                        Asia/Saigon (UTC+07:00) 
                        Asia/Yangon (UTC+06:30) 
                       Asia/Rangoon (UTC+06:30) 
                       Indian/Cocos (UTC+06:30) 
                       Asia/Kashgar (UTC+06:00) 
                          Etc/GMT-6 (UTC+06:00) 
                        Asia/Almaty (UTC+06:00) 
                         Asia/Dacca (UTC+06:00) 
                          Asia/Omsk (UTC+06:00) 
                         Asia/Dhaka (UTC+06:00) 
                      Indian/Chagos (UTC+06:00) 
                     Asia/Qyzylorda (UTC+06:00) 
                       Asia/Bishkek (UTC+06:00) 
                  Antarctica/Vostok (UTC+06:00) 
                        Asia/Urumqi (UTC+06:00) 
                        Asia/Thimbu (UTC+06:00) 
                       Asia/Thimphu (UTC+06:00) 
                     Asia/Kathmandu (UTC+05:45) 
                      Asia/Katmandu (UTC+05:45) 
                       Asia/Kolkata (UTC+05:30) 
                       Asia/Colombo (UTC+05:30) 
                      Asia/Calcutta (UTC+05:30) 
                         Asia/Aqtau (UTC+05:00) 
                          Etc/GMT-5 (UTC+05:00) 
                     Asia/Samarkand (UTC+05:00) 
                       Asia/Karachi (UTC+05:00) 
                 Asia/Yekaterinburg (UTC+05:00) 
                      Asia/Dushanbe (UTC+05:00) 
                    Indian/Maldives (UTC+05:00) 
                          Asia/Oral (UTC+05:00) 
                      Asia/Tashkent (UTC+05:00) 
                  Antarctica/Mawson (UTC+05:00) 
                        Asia/Aqtobe (UTC+05:00) 
                     Asia/Ashkhabad (UTC+05:00) 
                      Asia/Ashgabat (UTC+05:00) 
                        Asia/Atyrau (UTC+05:00) 
                   Indian/Kerguelen (UTC+05:00) 
                               Iran (UTC+04:30) 
                        Asia/Tehran (UTC+04:30) 
                         Asia/Kabul (UTC+04:30) 
                       Asia/Yerevan (UTC+04:00) 
                          Etc/GMT-4 (UTC+04:00) 
                         Asia/Dubai (UTC+04:00) 
                     Indian/Reunion (UTC+04:00) 
                   Indian/Mauritius (UTC+04:00) 
                     Europe/Saratov (UTC+04:00) 
                      Europe/Samara (UTC+04:00) 
                        Indian/Mahe (UTC+04:00) 
                          Asia/Baku (UTC+04:00) 
                        Asia/Muscat (UTC+04:00) 
                   Europe/Volgograd (UTC+04:00) 
                   Europe/Astrakhan (UTC+04:00) 
                       Asia/Tbilisi (UTC+04:00) 
                   Europe/Ulyanovsk (UTC+04:00) 
                          Asia/Aden (UTC+03:00) 
                     Africa/Nairobi (UTC+03:00) 
                    Europe/Istanbul (UTC+03:00) 
                          Etc/GMT-3 (UTC+03:00) 
                  Europe/Zaporozhye (UTC+03:00) 
                             Israel (UTC+03:00) 
                      Indian/Comoro (UTC+03:00) 
                   Antarctica/Syowa (UTC+03:00) 
                   Africa/Mogadishu (UTC+03:00) 
                   Europe/Bucharest (UTC+03:00) 
                      Africa/Asmera (UTC+03:00) 
                   Europe/Mariehamn (UTC+03:00) 
                      Asia/Istanbul (UTC+03:00) 
                    Europe/Tiraspol (UTC+03:00) 
                      Europe/Moscow (UTC+03:00) 
                    Europe/Chisinau (UTC+03:00) 
                    Europe/Helsinki (UTC+03:00) 
                        Asia/Beirut (UTC+03:00) 
                      Asia/Tel_Aviv (UTC+03:00) 
                    Africa/Djibouti (UTC+03:00) 
                  Europe/Simferopol (UTC+03:00) 
                       Europe/Sofia (UTC+03:00) 
                          Asia/Gaza (UTC+03:00) 
                      Africa/Asmara (UTC+03:00) 
                        Europe/Riga (UTC+03:00) 
                       Asia/Baghdad (UTC+03:00) 
                      Asia/Damascus (UTC+03:00) 
               Africa/Dar_es_Salaam (UTC+03:00) 
                 Africa/Addis_Ababa (UTC+03:00) 
                    Europe/Uzhgorod (UTC+03:00) 
                     Asia/Jerusalem (UTC+03:00) 
                        Asia/Riyadh (UTC+03:00) 
                        Asia/Kuwait (UTC+03:00) 
                       Europe/Kirov (UTC+03:00) 
                     Africa/Kampala (UTC+03:00) 
                       Europe/Minsk (UTC+03:00) 
                         Asia/Qatar (UTC+03:00) 
                        Europe/Kiev (UTC+03:00) 
                       Asia/Bahrain (UTC+03:00) 
                     Europe/Vilnius (UTC+03:00) 
                Indian/Antananarivo (UTC+03:00) 
                     Indian/Mayotte (UTC+03:00) 
                     Europe/Tallinn (UTC+03:00) 
                             Turkey (UTC+03:00) 
                        Africa/Juba (UTC+03:00) 
                       Asia/Nicosia (UTC+03:00) 
                     Asia/Famagusta (UTC+03:00) 
                               W-SU (UTC+03:00) 
                                EET (UTC+03:00) 
                        Asia/Hebron (UTC+03:00) 
                         Asia/Amman (UTC+03:00) 
                     Europe/Nicosia (UTC+03:00) 
                      Europe/Athens (UTC+03:00) 
                       Africa/Cairo (UTC+02:00) 
                     Africa/Mbabane (UTC+02:00) 
                    Europe/Brussels (UTC+02:00) 
                      Europe/Warsaw (UTC+02:00) 
                                CET (UTC+02:00) 
                  Europe/Luxembourg (UTC+02:00) 
                          Etc/GMT-2 (UTC+02:00) 
                              Libya (UTC+02:00) 
                      Africa/Kigali (UTC+02:00) 
                     Africa/Tripoli (UTC+02:00) 
                 Europe/Kaliningrad (UTC+02:00) 
                    Africa/Windhoek (UTC+02:00) 
                       Europe/Malta (UTC+02:00) 
                    Europe/Busingen (UTC+02:00) 
                      Europe/Skopje (UTC+02:00) 
                    Europe/Sarajevo (UTC+02:00) 
                        Europe/Rome (UTC+02:00) 
                      Europe/Zurich (UTC+02:00) 
                   Europe/Gibraltar (UTC+02:00) 
                  Africa/Lubumbashi (UTC+02:00) 
                       Europe/Vaduz (UTC+02:00) 
                   Europe/Ljubljana (UTC+02:00) 
                      Europe/Berlin (UTC+02:00) 
                   Europe/Stockholm (UTC+02:00) 
                    Europe/Budapest (UTC+02:00) 
                      Europe/Zagreb (UTC+02:00) 
                       Europe/Paris (UTC+02:00) 
                       Africa/Ceuta (UTC+02:00) 
                      Europe/Prague (UTC+02:00) 
                   Antarctica/Troll (UTC+02:00) 
                    Africa/Gaborone (UTC+02:00) 
                  Europe/Copenhagen (UTC+02:00) 
                      Europe/Vienna (UTC+02:00) 
                      Europe/Tirane (UTC+02:00) 
                                MET (UTC+02:00) 
                   Europe/Amsterdam (UTC+02:00) 
                      Africa/Maputo (UTC+02:00) 
                  Europe/San_Marino (UTC+02:00) 
                             Poland (UTC+02:00) 
                     Europe/Andorra (UTC+02:00) 
                        Europe/Oslo (UTC+02:00) 
                   Europe/Podgorica (UTC+02:00) 
                   Africa/Bujumbura (UTC+02:00) 
                 Atlantic/Jan_Mayen (UTC+02:00) 
                      Africa/Maseru (UTC+02:00) 
                      Europe/Madrid (UTC+02:00) 
                    Africa/Blantyre (UTC+02:00) 
                      Africa/Lusaka (UTC+02:00) 
                      Africa/Harare (UTC+02:00) 
                    Africa/Khartoum (UTC+02:00) 
                Africa/Johannesburg (UTC+02:00) 
                    Europe/Belgrade (UTC+02:00) 
                  Europe/Bratislava (UTC+02:00) 
                Arctic/Longyearbyen (UTC+02:00) 
                              Egypt (UTC+02:00) 
                     Europe/Vatican (UTC+02:00) 
                      Europe/Monaco (UTC+02:00) 
                      Europe/London (UTC+01:00) 
                          Etc/GMT-1 (UTC+01:00) 
                      Europe/Jersey (UTC+01:00) 
                    Europe/Guernsey (UTC+01:00) 
                 Europe/Isle_of_Man (UTC+01:00) 
                       Africa/Tunis (UTC+01:00) 
                      Africa/Malabo (UTC+01:00) 
                            GB-Eire (UTC+01:00) 
                       Africa/Lagos (UTC+01:00) 
                     Africa/Algiers (UTC+01:00) 
                                 GB (UTC+01:00) 
                           Portugal (UTC+01:00) 
                    Africa/Sao_Tome (UTC+01:00) 
                    Africa/Ndjamena (UTC+01:00) 
                    Atlantic/Faeroe (UTC+01:00) 
                               Eire (UTC+01:00) 
                     Atlantic/Faroe (UTC+01:00) 
                      Europe/Dublin (UTC+01:00) 
                  Africa/Libreville (UTC+01:00) 
                    Africa/El_Aaiun (UTC+01:00) 
                      Africa/Douala (UTC+01:00) 
                 Africa/Brazzaville (UTC+01:00) 
                  Africa/Porto-Novo (UTC+01:00) 
                   Atlantic/Madeira (UTC+01:00) 
                      Europe/Lisbon (UTC+01:00) 
                    Atlantic/Canary (UTC+01:00) 
                  Africa/Casablanca (UTC+01:00) 
                     Europe/Belfast (UTC+01:00) 
                      Africa/Luanda (UTC+01:00) 
                    Africa/Kinshasa (UTC+01:00) 
                      Africa/Bangui (UTC+01:00) 
                                WET (UTC+01:00) 
                      Africa/Niamey (UTC+01:00) 
                                GMT (UTC+00:00) 
                          Etc/GMT-0 (UTC+00:00) 
                 Atlantic/St_Helena (UTC+00:00) 
                          Etc/GMT+0 (UTC+00:00) 
                      Africa/Banjul (UTC+00:00) 
                            Etc/GMT (UTC+00:00) 
                    Africa/Freetown (UTC+00:00) 
                      Africa/Bamako (UTC+00:00) 
                     Africa/Conakry (UTC+00:00) 
                          Universal (UTC+00:00) 
                  Africa/Nouakchott (UTC+00:00) 
                                UTC (UTC+00:00) 
                      Etc/Universal (UTC+00:00) 
                    Atlantic/Azores (UTC+00:00) 
                     Africa/Abidjan (UTC+00:00) 
                       Africa/Accra (UTC+00:00) 
                            Etc/UCT (UTC+00:00) 
                               GMT0 (UTC+00:00) 
                               Zulu (UTC+00:00) 
                 Africa/Ouagadougou (UTC+00:00) 
                 Atlantic/Reykjavik (UTC+00:00) 
                           Etc/Zulu (UTC+00:00) 
                            Iceland (UTC+00:00) 
                        Africa/Lome (UTC+00:00) 
                          Greenwich (UTC+00:00) 
                           Etc/GMT0 (UTC+00:00) 
               America/Danmarkshavn (UTC+00:00) 
                       Africa/Dakar (UTC+00:00) 
               America/Scoresbysund (UTC+00:00) 
                      Africa/Bissau (UTC+00:00) 
                      Etc/Greenwich (UTC+00:00) 
                    Africa/Timbuktu (UTC+00:00) 
                                UCT (UTC+00:00) 
                    Africa/Monrovia (UTC+00:00) 
                            Etc/UTC (UTC+00:00) 

Total Zone IDs 599

2. Reduced Version

2.1 This is the reduced version created by Renan (comment below)

DisplayZoneAndOffSet2.java

package com.mkyong;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.AbstractMap.SimpleEntry;
import java.util.Map;

public class DisplayZoneAndOffSet2 {

    public static final boolean SORT_BY_REGION = false;

    public static void main(String[] args) {

        LocalDateTime localDateTime = LocalDateTime.now();

        long total = ZoneId.getAvailableZoneIds()
                .stream()
                .map(ZoneId::of)
                .map(zoneId -> new SimpleEntry<>(zoneId.toString(), localDateTime.atZone(zoneId)
                        .getOffset()
                        .getId()
                        .replaceAll("Z", "+00:00")))
                .sorted(SORT_BY_REGION
                        ? Map.Entry.comparingByKey()
                        : Map.Entry.<String, String>comparingByValue().reversed())
                .peek(e -> System.out.printf(String.format("%35s (UTC%s) %n", e.getKey(), e.getValue())))
                .count();

        System.out.println("\nTotal Zone IDs " + total);

    }
}

It works in Java 8, but the ‘peek()’ will fail to print in Java 9 and above, due to this peek() and count() issue

2.2 I modified a bit and return a new sorted map. Tested with Java 8 and Java 12.

DisplayZoneAndOffSet3.java

package com.mkyong;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.AbstractMap.SimpleEntry;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;

public class DisplayZoneAndOffSet3 {

    public static final boolean SORT_BY_REGION = false;

    public static void main(String[] args) {

        LocalDateTime localDateTime = LocalDateTime.now();

        Map<String, String> result = ZoneId.getAvailableZoneIds()
                .stream()
                .map(ZoneId::of)
                .map(zoneId -> new SimpleEntry<>(zoneId.toString(), localDateTime.atZone(zoneId)
                        .getOffset()
                        .getId()
                        .replaceAll("Z", "+00:00")))
                .sorted(SORT_BY_REGION
                        ? Map.Entry.comparingByKey()
                        : Map.Entry.<String, String>comparingByValue().reversed())
                .collect(Collectors.toMap(
                        SimpleEntry::getKey,
                        SimpleEntry::getValue,
                        (oldValue, newValue) -> oldValue,
                        LinkedHashMap::new));

        result.forEach((k, v) -> System.out.printf(String.format("%35s (UTC%s) %n", k, v)));

        System.out.println("\nTotal Zone IDs " + result.size());

    }
}

References

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
10 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Renan
6 years ago

Here’s a reduced version of this same class:

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.AbstractMap.SimpleEntry;
import java.util.Map;

public class DisplayZoneAndOffSet {

public static final boolean SORT_BY_REGION = false;

public static void main(String[] args) {

LocalDateTime localDateTime = LocalDateTime.now();

long total = ZoneId.getAvailableZoneIds()
.stream()
.map(ZoneId::of)
.map(zoneId -> new SimpleEntry(zoneId.toString(), localDateTime.atZone(zoneId)
.getOffset()
.getId()
.replaceAll(“Z”, “+00:00”)))
.sorted(SORT_BY_REGION
? Map.Entry.comparingByKey()
: Map.Entry.comparingByValue().reversed())
.peek(e -> System.out.printf(String.format(“%35s (UTC%s) %n”, e.getKey(), e.getValue())))
.count();

System.out.println(“nTotal Zone IDs ” + total);
}
}

Jo li
6 years ago

The list is too long.. and lots of repetition. For example, SG shows twice. Singapore (UTC+08:00)? Asia/Singapore (UTC+08:00)?Etc/GMT-8 (UTC+08:00)

Montia
5 years ago

The UTC offset is actually the Daylight Savings Time (DST) UTC Offset in the list above. For example, the offset for Canada/Pacific is (UTC-07:00), but that’s actually the DST UTC offset because the rest of the year the UTC offset is -08:00.
And yes, there are many duplicates. See the following for a list of zones that has the same rules:
https://coderanch.com/t/583150/java/timezone-getavailableids-shows-duplicates

Renan
6 years ago

Oops, the formatting messed up the code. Here it is on pastebin: https://pastebin.com/0wWTpZYi

thesoft - web solutions
4 years ago

Nice Article 🙂

Pete
7 years ago

Hi,

I tried to compile this java file using the website: https://www.compilejava.net/ but it gives the error: Could not find or load main class DisplayZoneAndOffSet

I was wondering if you could provide a compiled version of this so that I can download it?

Best regards,

Pete

Jo li
6 years ago
Reply to  Pete

tried, It runs well on this website. Also it can get the correct list in my dev env, too

mkyong
7 years ago
Reply to  Pete

Tested at https://www.compilejava.net/ , no problem. When you compile with the online compiler, please ignore the top package info, the online compiler didn’t support package.

//package com.mkyong.date;

Toto
7 years ago
Reply to  Pete

It runs perfectly well on this website. Have you copied correctly the source?