Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve time zone display names on Unix #48931

Merged

Conversation

mattjohnsonpint
Copy link
Contributor

This PR tackles the problem described in #16232, addressing a long-unresolved TODO comment in the Unix implementation of setting the value for TimeZoneInfo.DisplayName.

While its still true that ICU doesn't expose the generic name via the ucal_getTimeZoneDisplayName function, we can get at various forms of the generic name via the udat_format function instead, by formatting the a datetime with patterns. The ICU date field symbol table gives several different patterns that are useful to us:

  • vvvv - The generic non-location time zone name (ex: "Pacific Time")
  • VVVV - The generic time zone location name (ex: "Los Angeles Time")
  • VVV - The exemplar city associated with the time zone (ex: "Los Angeles")

In my implementation, each is retrieved separately in native code, then they are combined with the base UTC offset in managed code. They are combined in various ways to produce a final DisplayName for the time zone that is unique, discoverable, and intuitive when presenting a list.

Even with access to these strings, there are several edge cases that have to be handled. Most are in the managed code in TimeZoneInfo.Unix.cs, and one is handled in native code in pal_timeZoneInfo.c. They are documented in the code comments.

Below are the time zones before and after this change (Ubuntu 20.10, ICU 67.1-4, en-US). Observe from the "before" list, the problem of not being able to distinguish one time zone from another by looking only at the DisplayName. For example, there were 13 different time zones that had the same string (UTC-07:00) Mountain Standard Time. That was very problematic for an end-user to choose a time zone.

I also addressed a related issue, which was that the UTC time zone not using localized display names, but was fixed to the English "Coordinated Universal Time" on both Unix and Windows. It is now localized using the same locale as the other names (using the OS language on Windows, and using CurrentUICulture on Unix).


Before

(click to expand)
Id Display Name
Pacific/Niue (UTC-11:00) Niue Time
Pacific/Pago_Pago (UTC-11:00) Samoa Standard Time
Pacific/Midway (UTC-11:00) Samoa Standard Time
Pacific/Rarotonga (UTC-10:00) Cook Islands Standard Time
Pacific/Honolulu (UTC-10:00) Hawaii-Aleutian Standard Time
America/Adak (UTC-10:00) Hawaii-Aleutian Standard Time
Pacific/Tahiti (UTC-10:00) Tahiti Time
Pacific/Marquesas (UTC-09:30) Marquesas Time
America/Metlakatla (UTC-09:00) Alaska Standard Time
America/Sitka (UTC-09:00) Alaska Standard Time
America/Juneau (UTC-09:00) Alaska Standard Time
America/Yakutat (UTC-09:00) Alaska Standard Time
America/Anchorage (UTC-09:00) Alaska Standard Time
America/Nome (UTC-09:00) Alaska Standard Time
Pacific/Gambier (UTC-09:00) Gambier Time
America/Los_Angeles (UTC-08:00) Pacific Standard Time
America/Vancouver (UTC-08:00) Pacific Standard Time
America/Tijuana (UTC-08:00) Pacific Standard Time
Pacific/Pitcairn (UTC-08:00) Pitcairn Time
America/Hermosillo (UTC-07:00) Mexican Pacific Standard Time
America/Mazatlan (UTC-07:00) Mexican Pacific Standard Time
America/Chihuahua (UTC-07:00) Mexican Pacific Standard Time
America/Phoenix (UTC-07:00) Mountain Standard Time
America/Boise (UTC-07:00) Mountain Standard Time
America/Denver (UTC-07:00) Mountain Standard Time
America/Yellowknife (UTC-07:00) Mountain Standard Time
America/Ojinaga (UTC-07:00) Mountain Standard Time
America/Inuvik (UTC-07:00) Mountain Standard Time
America/Whitehorse (UTC-07:00) Mountain Standard Time
America/Edmonton (UTC-07:00) Mountain Standard Time
America/Creston (UTC-07:00) Mountain Standard Time
America/Cambridge_Bay (UTC-07:00) Mountain Standard Time
America/Dawson_Creek (UTC-07:00) Mountain Standard Time
America/Dawson (UTC-07:00) Mountain Standard Time
America/Fort_Nelson (UTC-07:00) Mountain Standard Time
America/Guatemala (UTC-06:00) Central Standard Time
America/Swift_Current (UTC-06:00) Central Standard Time
America/Indiana/Knox (UTC-06:00) Central Standard Time
America/Rankin_Inlet (UTC-06:00) Central Standard Time
America/Mexico_City (UTC-06:00) Central Standard Time
America/Chicago (UTC-06:00) Central Standard Time
America/Matamoros (UTC-06:00) Central Standard Time
America/Indiana/Tell_City (UTC-06:00) Central Standard Time
America/Tegucigalpa (UTC-06:00) Central Standard Time
America/Regina (UTC-06:00) Central Standard Time
America/North_Dakota/Center (UTC-06:00) Central Standard Time
America/Costa_Rica (UTC-06:00) Central Standard Time
America/North_Dakota/New_Salem (UTC-06:00) Central Standard Time
America/North_Dakota/Beulah (UTC-06:00) Central Standard Time
America/Resolute (UTC-06:00) Central Standard Time
America/Rainy_River (UTC-06:00) Central Standard Time
America/El_Salvador (UTC-06:00) Central Standard Time
America/Winnipeg (UTC-06:00) Central Standard Time
America/Merida (UTC-06:00) Central Standard Time
America/Monterrey (UTC-06:00) Central Standard Time
America/Managua (UTC-06:00) Central Standard Time
America/Belize (UTC-06:00) Central Standard Time
America/Menominee (UTC-06:00) Central Standard Time
America/Bahia_Banderas (UTC-06:00) Central Standard Time
Pacific/Easter (UTC-06:00) Easter Island Standard Time
Pacific/Galapagos (UTC-06:00) Galapagos Time
America/Eirunepe (UTC-05:00) Acre Standard Time
America/Rio_Branco (UTC-05:00) Acre Standard Time
America/Bogota (UTC-05:00) Colombia Standard Time
America/Havana (UTC-05:00) Cuba Standard Time
America/Cayman (UTC-05:00) Eastern Standard Time
America/Port-au-Prince (UTC-05:00) Eastern Standard Time
America/Jamaica (UTC-05:00) Eastern Standard Time
America/Cancun (UTC-05:00) Eastern Standard Time
America/Atikokan (UTC-05:00) Eastern Standard Time
America/Pangnirtung (UTC-05:00) Eastern Standard Time
America/Iqaluit (UTC-05:00) Eastern Standard Time
America/Thunder_Bay (UTC-05:00) Eastern Standard Time
America/Nipigon (UTC-05:00) Eastern Standard Time
America/Toronto (UTC-05:00) Eastern Standard Time
America/Grand_Turk (UTC-05:00) Eastern Standard Time
America/New_York (UTC-05:00) Eastern Standard Time
America/Panama (UTC-05:00) Eastern Standard Time
America/Kentucky/Louisville (UTC-05:00) Eastern Standard Time
America/Indiana/Indianapolis (UTC-05:00) Eastern Standard Time
America/Kentucky/Monticello (UTC-05:00) Eastern Standard Time
America/Nassau (UTC-05:00) Eastern Standard Time
America/Indiana/Winamac (UTC-05:00) Eastern Standard Time
America/Indiana/Marengo (UTC-05:00) Eastern Standard Time
America/Indiana/Petersburg (UTC-05:00) Eastern Standard Time
America/Detroit (UTC-05:00) Eastern Standard Time
America/Indiana/Vincennes (UTC-05:00) Eastern Standard Time
America/Indiana/Vevay (UTC-05:00) Eastern Standard Time
America/Guayaquil (UTC-05:00) Ecuador Time
America/Lima (UTC-05:00) Peru Standard Time
America/Porto_Velho (UTC-04:00) Amazon Standard Time
America/Manaus (UTC-04:00) Amazon Standard Time
America/Campo_Grande (UTC-04:00) Amazon Standard Time
America/Boa_Vista (UTC-04:00) Amazon Standard Time
America/Cuiaba (UTC-04:00) Amazon Standard Time
America/Santo_Domingo (UTC-04:00) Atlantic Standard Time
America/Dominica (UTC-04:00) Atlantic Standard Time
America/Lower_Princes (UTC-04:00) Atlantic Standard Time
America/Curacao (UTC-04:00) Atlantic Standard Time
America/Port_of_Spain (UTC-04:00) Atlantic Standard Time
America/Puerto_Rico (UTC-04:00) Atlantic Standard Time
America/St_Kitts (UTC-04:00) Atlantic Standard Time
America/Guadeloupe (UTC-04:00) Atlantic Standard Time
America/Thule (UTC-04:00) Atlantic Standard Time
America/Grenada (UTC-04:00) Atlantic Standard Time
America/Martinique (UTC-04:00) Atlantic Standard Time
America/Goose_Bay (UTC-04:00) Atlantic Standard Time
Atlantic/Bermuda (UTC-04:00) Atlantic Standard Time
America/Kralendijk (UTC-04:00) Atlantic Standard Time
America/Barbados (UTC-04:00) Atlantic Standard Time
America/St_Vincent (UTC-04:00) Atlantic Standard Time
America/Blanc-Sablon (UTC-04:00) Atlantic Standard Time
America/Marigot (UTC-04:00) Atlantic Standard Time
America/St_Barthelemy (UTC-04:00) Atlantic Standard Time
America/Anguilla (UTC-04:00) Atlantic Standard Time
America/Tortola (UTC-04:00) Atlantic Standard Time
America/St_Thomas (UTC-04:00) Atlantic Standard Time
America/Montserrat (UTC-04:00) Atlantic Standard Time
America/Aruba (UTC-04:00) Atlantic Standard Time
America/Halifax (UTC-04:00) Atlantic Standard Time
America/Glace_Bay (UTC-04:00) Atlantic Standard Time
America/Moncton (UTC-04:00) Atlantic Standard Time
America/Antigua (UTC-04:00) Atlantic Standard Time
America/St_Lucia (UTC-04:00) Atlantic Standard Time
America/La_Paz (UTC-04:00) Bolivia Time
America/Santiago (UTC-04:00) Chile Standard Time
America/Guyana (UTC-04:00) Guyana Time
America/Asuncion (UTC-04:00) Paraguay Standard Time
America/Caracas (UTC-04:00) Venezuela Time
America/St_Johns (UTC-03:30) Newfoundland Standard Time
America/Argentina/Buenos_Aires (UTC-03:00) Argentina Standard Time
America/Argentina/Salta (UTC-03:00) Argentina Standard Time
America/Argentina/Jujuy (UTC-03:00) Argentina Standard Time
America/Argentina/Tucuman (UTC-03:00) Argentina Standard Time
America/Argentina/Cordoba (UTC-03:00) Argentina Standard Time
America/Argentina/Catamarca (UTC-03:00) Argentina Standard Time
America/Argentina/Mendoza (UTC-03:00) Argentina Standard Time
America/Argentina/San_Juan (UTC-03:00) Argentina Standard Time
America/Argentina/San_Luis (UTC-03:00) Argentina Standard Time
America/Argentina/Rio_Gallegos (UTC-03:00) Argentina Standard Time
America/Argentina/Ushuaia (UTC-03:00) Argentina Standard Time
America/Argentina/La_Rioja (UTC-03:00) Argentina Standard Time
America/Santarem (UTC-03:00) Brasilia Standard Time
America/Sao_Paulo (UTC-03:00) Brasilia Standard Time
America/Bahia (UTC-03:00) Brasilia Standard Time
America/Maceio (UTC-03:00) Brasilia Standard Time
America/Araguaina (UTC-03:00) Brasilia Standard Time
America/Recife (UTC-03:00) Brasilia Standard Time
America/Fortaleza (UTC-03:00) Brasilia Standard Time
America/Belem (UTC-03:00) Brasilia Standard Time
Atlantic/Stanley (UTC-03:00) Falkland Islands Standard Time
America/Cayenne (UTC-03:00) French Guiana Time
Antarctica/Palmer (UTC-03:00) GMT-03:00
America/Punta_Arenas (UTC-03:00) GMT-03:00
Antarctica/Rothera (UTC-03:00) Rothera Time
America/Miquelon (UTC-03:00) St. Pierre & Miquelon Standard Time
America/Paramaribo (UTC-03:00) Suriname Time
America/Montevideo (UTC-03:00) Uruguay Standard Time
America/Nuuk (UTC-03:00) West Greenland Standard Time
America/Noronha (UTC-02:00) Fernando de Noronha Standard Time
Atlantic/South_Georgia (UTC-02:00) South Georgia Time
Atlantic/Azores (UTC-01:00) Azores Standard Time
Atlantic/Cape_Verde (UTC-01:00) Cape Verde Standard Time
America/Scoresbysund (UTC-01:00) East Greenland Standard Time
UTC (UTC) Coordinated Universal Time
Africa/Accra (UTC+00:00) Greenwich Mean Time
Africa/Sao_Tome (UTC+00:00) Greenwich Mean Time
Africa/Ouagadougou (UTC+00:00) Greenwich Mean Time
Africa/Monrovia (UTC+00:00) Greenwich Mean Time
Africa/Lome (UTC+00:00) Greenwich Mean Time
Atlantic/Reykjavik (UTC+00:00) Greenwich Mean Time
Antarctica/Troll (UTC+00:00) Greenwich Mean Time
Africa/Dakar (UTC+00:00) Greenwich Mean Time
Atlantic/St_Helena (UTC+00:00) Greenwich Mean Time
Africa/Abidjan (UTC+00:00) Greenwich Mean Time
Europe/Isle_of_Man (UTC+00:00) Greenwich Mean Time
Europe/Jersey (UTC+00:00) Greenwich Mean Time
Africa/Bissau (UTC+00:00) Greenwich Mean Time
Africa/Nouakchott (UTC+00:00) Greenwich Mean Time
Africa/Conakry (UTC+00:00) Greenwich Mean Time
Africa/Banjul (UTC+00:00) Greenwich Mean Time
Europe/London (UTC+00:00) Greenwich Mean Time
America/Danmarkshavn (UTC+00:00) Greenwich Mean Time
Europe/Guernsey (UTC+00:00) Greenwich Mean Time
Africa/Bamako (UTC+00:00) Greenwich Mean Time
Africa/Freetown (UTC+00:00) Greenwich Mean Time
Atlantic/Faroe (UTC+00:00) Western European Standard Time
Europe/Lisbon (UTC+00:00) Western European Standard Time
Atlantic/Madeira (UTC+00:00) Western European Standard Time
Atlantic/Canary (UTC+00:00) Western European Standard Time
Europe/Amsterdam (UTC+01:00) Central European Standard Time
Europe/Oslo (UTC+01:00) Central European Standard Time
Africa/Tunis (UTC+01:00) Central European Standard Time
Europe/Zurich (UTC+01:00) Central European Standard Time
Europe/Vienna (UTC+01:00) Central European Standard Time
Europe/Brussels (UTC+01:00) Central European Standard Time
Europe/Sarajevo (UTC+01:00) Central European Standard Time
Europe/Luxembourg (UTC+01:00) Central European Standard Time
Europe/Vatican (UTC+01:00) Central European Standard Time
Europe/Monaco (UTC+01:00) Central European Standard Time
Europe/Podgorica (UTC+01:00) Central European Standard Time
Europe/Tirane (UTC+01:00) Central European Standard Time
Europe/Malta (UTC+01:00) Central European Standard Time
Europe/Andorra (UTC+01:00) Central European Standard Time
Europe/Skopje (UTC+01:00) Central European Standard Time
Europe/Vaduz (UTC+01:00) Central European Standard Time
Europe/Prague (UTC+01:00) Central European Standard Time
Europe/Copenhagen (UTC+01:00) Central European Standard Time
Europe/Busingen (UTC+01:00) Central European Standard Time
Europe/Stockholm (UTC+01:00) Central European Standard Time
Europe/San_Marino (UTC+01:00) Central European Standard Time
Europe/Berlin (UTC+01:00) Central European Standard Time
Europe/Belgrade (UTC+01:00) Central European Standard Time
Europe/Ljubljana (UTC+01:00) Central European Standard Time
Arctic/Longyearbyen (UTC+01:00) Central European Standard Time
Europe/Budapest (UTC+01:00) Central European Standard Time
Europe/Paris (UTC+01:00) Central European Standard Time
Africa/Ceuta (UTC+01:00) Central European Standard Time
Europe/Bratislava (UTC+01:00) Central European Standard Time
Europe/Rome (UTC+01:00) Central European Standard Time
Europe/Madrid (UTC+01:00) Central European Standard Time
Africa/Algiers (UTC+01:00) Central European Standard Time
Europe/Warsaw (UTC+01:00) Central European Standard Time
Europe/Gibraltar (UTC+01:00) Central European Standard Time
Europe/Zagreb (UTC+01:00) Central European Standard Time
Africa/Casablanca (UTC+01:00) GMT
Africa/El_Aaiun (UTC+01:00) GMT
Europe/Dublin (UTC+01:00) Greenwich Mean Time
Africa/Malabo (UTC+01:00) West Africa Standard Time
Africa/Luanda (UTC+01:00) West Africa Standard Time
Africa/Libreville (UTC+01:00) West Africa Standard Time
Africa/Douala (UTC+01:00) West Africa Standard Time
Africa/Porto-Novo (UTC+01:00) West Africa Standard Time
Africa/Kinshasa (UTC+01:00) West Africa Standard Time
Africa/Bangui (UTC+01:00) West Africa Standard Time
Africa/Brazzaville (UTC+01:00) West Africa Standard Time
Africa/Niamey (UTC+01:00) West Africa Standard Time
Africa/Lagos (UTC+01:00) West Africa Standard Time
Africa/Ndjamena (UTC+01:00) West Africa Standard Time
Africa/Khartoum (UTC+02:00) Central Africa Time
Africa/Maputo (UTC+02:00) Central Africa Time
Africa/Blantyre (UTC+02:00) Central Africa Time
Africa/Windhoek (UTC+02:00) Central Africa Time
Africa/Juba (UTC+02:00) Central Africa Time
Africa/Kigali (UTC+02:00) Central Africa Time
Africa/Harare (UTC+02:00) Central Africa Time
Africa/Lubumbashi (UTC+02:00) Central Africa Time
Africa/Bujumbura (UTC+02:00) Central Africa Time
Africa/Gaborone (UTC+02:00) Central Africa Time
Africa/Lusaka (UTC+02:00) Central Africa Time
Europe/Helsinki (UTC+02:00) Eastern European Standard Time
Europe/Kiev (UTC+02:00) Eastern European Standard Time
Europe/Uzhgorod (UTC+02:00) Eastern European Standard Time
Europe/Athens (UTC+02:00) Eastern European Standard Time
Europe/Zaporozhye (UTC+02:00) Eastern European Standard Time
Europe/Mariehamn (UTC+02:00) Eastern European Standard Time
Asia/Damascus (UTC+02:00) Eastern European Standard Time
Europe/Tallinn (UTC+02:00) Eastern European Standard Time
Europe/Kaliningrad (UTC+02:00) Eastern European Standard Time
Europe/Sofia (UTC+02:00) Eastern European Standard Time
Asia/Hebron (UTC+02:00) Eastern European Standard Time
Asia/Gaza (UTC+02:00) Eastern European Standard Time
Asia/Amman (UTC+02:00) Eastern European Standard Time
Africa/Cairo (UTC+02:00) Eastern European Standard Time
Europe/Bucharest (UTC+02:00) Eastern European Standard Time
Asia/Nicosia (UTC+02:00) Eastern European Standard Time
Europe/Chisinau (UTC+02:00) Eastern European Standard Time
Europe/Riga (UTC+02:00) Eastern European Standard Time
Europe/Vilnius (UTC+02:00) Eastern European Standard Time
Africa/Tripoli (UTC+02:00) Eastern European Standard Time
Asia/Beirut (UTC+02:00) Eastern European Standard Time
Asia/Famagusta (UTC+02:00) GMT+02:00
Asia/Jerusalem (UTC+02:00) Israel Standard Time
Africa/Mbabane (UTC+02:00) South Africa Standard Time
Africa/Johannesburg (UTC+02:00) South Africa Standard Time
Africa/Maseru (UTC+02:00) South Africa Standard Time
Asia/Bahrain (UTC+03:00) Arabian Standard Time
Asia/Aden (UTC+03:00) Arabian Standard Time
Asia/Baghdad (UTC+03:00) Arabian Standard Time
Asia/Kuwait (UTC+03:00) Arabian Standard Time
Asia/Riyadh (UTC+03:00) Arabian Standard Time
Asia/Qatar (UTC+03:00) Arabian Standard Time
Africa/Dar_es_Salaam (UTC+03:00) East Africa Time
Indian/Antananarivo (UTC+03:00) East Africa Time
Africa/Kampala (UTC+03:00) East Africa Time
Africa/Mogadishu (UTC+03:00) East Africa Time
Africa/Nairobi (UTC+03:00) East Africa Time
Indian/Comoro (UTC+03:00) East Africa Time
Africa/Djibouti (UTC+03:00) East Africa Time
Africa/Addis_Ababa (UTC+03:00) East Africa Time
Indian/Mayotte (UTC+03:00) East Africa Time
Africa/Asmara (UTC+03:00) East Africa Time
Europe/Istanbul (UTC+03:00) GMT+03:00
Europe/Kirov (UTC+03:00) GMT+03:00
Europe/Simferopol (UTC+03:00) Moscow Standard Time
Europe/Moscow (UTC+03:00) Moscow Standard Time
Europe/Minsk (UTC+03:00) Moscow Standard Time
Antarctica/Syowa (UTC+03:00) Syowa Time
Europe/Volgograd (UTC+03:00) Volgograd Standard Time
Asia/Tehran (UTC+03:30) Iran Standard Time
Asia/Yerevan (UTC+04:00) Armenia Standard Time
Asia/Baku (UTC+04:00) Azerbaijan Standard Time
Europe/Saratov (UTC+04:00) GMT+04:00
Europe/Astrakhan (UTC+04:00) GMT+04:00
Europe/Ulyanovsk (UTC+04:00) GMT+04:00
Asia/Tbilisi (UTC+04:00) Georgia Standard Time
Asia/Muscat (UTC+04:00) Gulf Standard Time
Asia/Dubai (UTC+04:00) Gulf Standard Time
Indian/Mauritius (UTC+04:00) Mauritius Standard Time
Indian/Reunion (UTC+04:00) Réunion Time
Europe/Samara (UTC+04:00) Samara Standard Time
Indian/Mahe (UTC+04:00) Seychelles Time
Asia/Kabul (UTC+04:30) Afghanistan Time
Indian/Kerguelen (UTC+05:00) French Southern & Antarctic Time
Indian/Maldives (UTC+05:00) Maldives Time
Antarctica/Mawson (UTC+05:00) Mawson Time
Asia/Karachi (UTC+05:00) Pakistan Standard Time
Asia/Dushanbe (UTC+05:00) Tajikistan Time
Asia/Ashgabat (UTC+05:00) Turkmenistan Standard Time
Asia/Tashkent (UTC+05:00) Uzbekistan Standard Time
Asia/Samarkand (UTC+05:00) Uzbekistan Standard Time
Asia/Aqtau (UTC+05:00) West Kazakhstan Time
Asia/Qyzylorda (UTC+05:00) West Kazakhstan Time
Asia/Aqtobe (UTC+05:00) West Kazakhstan Time
Asia/Oral (UTC+05:00) West Kazakhstan Time
Asia/Atyrau (UTC+05:00) West Kazakhstan Time
Asia/Yekaterinburg (UTC+05:00) Yekaterinburg Standard Time
Asia/Kolkata (UTC+05:30) India Standard Time
Asia/Colombo (UTC+05:30) India Standard Time
Asia/Kathmandu (UTC+05:45) Nepal Time
Asia/Dhaka (UTC+06:00) Bangladesh Standard Time
Asia/Thimphu (UTC+06:00) Bhutan Time
Asia/Qostanay (UTC+06:00) East Kazakhstan Time
Asia/Almaty (UTC+06:00) East Kazakhstan Time
Asia/Urumqi (UTC+06:00) GMT+06:00
Indian/Chagos (UTC+06:00) Indian Ocean Time
Asia/Bishkek (UTC+06:00) Kyrgyzstan Time
Asia/Omsk (UTC+06:00) Omsk Standard Time
Antarctica/Vostok (UTC+06:00) Vostok Time
Indian/Cocos (UTC+06:30) Cocos Islands Time
Asia/Yangon (UTC+06:30) Myanmar Time
Indian/Christmas (UTC+07:00) Christmas Island Time
Antarctica/Davis (UTC+07:00) Davis Time
Asia/Barnaul (UTC+07:00) GMT+07:00
Asia/Tomsk (UTC+07:00) GMT+07:00
Asia/Hovd (UTC+07:00) Hovd Standard Time
Asia/Ho_Chi_Minh (UTC+07:00) Indochina Time
Asia/Bangkok (UTC+07:00) Indochina Time
Asia/Vientiane (UTC+07:00) Indochina Time
Asia/Phnom_Penh (UTC+07:00) Indochina Time
Asia/Novokuznetsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Krasnoyarsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Novosibirsk (UTC+07:00) Novosibirsk Standard Time
Asia/Jakarta (UTC+07:00) Western Indonesia Time
Asia/Pontianak (UTC+07:00) Western Indonesia Time
Australia/Perth (UTC+08:00) Australian Western Standard Time
Asia/Brunei (UTC+08:00) Brunei Darussalam Time
Asia/Makassar (UTC+08:00) Central Indonesia Time
Asia/Shanghai (UTC+08:00) China Standard Time
Asia/Macau (UTC+08:00) China Standard Time
Asia/Hong_Kong (UTC+08:00) Hong Kong Standard Time
Asia/Irkutsk (UTC+08:00) Irkutsk Standard Time
Asia/Kuching (UTC+08:00) Malaysia Time
Asia/Kuala_Lumpur (UTC+08:00) Malaysia Time
Asia/Manila (UTC+08:00) Philippine Standard Time
Asia/Singapore (UTC+08:00) Singapore Standard Time
Asia/Taipei (UTC+08:00) Taipei Standard Time
Asia/Choibalsan (UTC+08:00) Ulaanbaatar Standard Time
Asia/Ulaanbaatar (UTC+08:00) Ulaanbaatar Standard Time
Australia/Eucla (UTC+08:45) Australian Central Western Standard Time
Asia/Dili (UTC+09:00) East Timor Time
Asia/Jayapura (UTC+09:00) Eastern Indonesia Time
Asia/Tokyo (UTC+09:00) Japan Standard Time
Asia/Pyongyang (UTC+09:00) Korean Standard Time
Asia/Seoul (UTC+09:00) Korean Standard Time
Pacific/Palau (UTC+09:00) Palau Time
Asia/Chita (UTC+09:00) Yakutsk Standard Time
Asia/Khandyga (UTC+09:00) Yakutsk Standard Time
Asia/Yakutsk (UTC+09:00) Yakutsk Standard Time
Australia/Broken_Hill (UTC+09:30) Australian Central Standard Time
Australia/Adelaide (UTC+09:30) Australian Central Standard Time
Australia/Darwin (UTC+09:30) Australian Central Standard Time
Australia/Sydney (UTC+10:00) Australian Eastern Standard Time
Antarctica/Macquarie (UTC+10:00) Australian Eastern Standard Time
Australia/Hobart (UTC+10:00) Australian Eastern Standard Time
Australia/Melbourne (UTC+10:00) Australian Eastern Standard Time
Australia/Brisbane (UTC+10:00) Australian Eastern Standard Time
Australia/Lindeman (UTC+10:00) Australian Eastern Standard Time
Pacific/Guam (UTC+10:00) Chamorro Standard Time
Pacific/Saipan (UTC+10:00) Chamorro Standard Time
Pacific/Chuuk (UTC+10:00) Chuuk Time
Antarctica/DumontDUrville (UTC+10:00) Dumont-d’Urville Time
Pacific/Port_Moresby (UTC+10:00) Papua New Guinea Time
Asia/Ust-Nera (UTC+10:00) Vladivostok Standard Time
Asia/Vladivostok (UTC+10:00) Vladivostok Standard Time
Australia/Lord_Howe (UTC+10:30) Lord Howe Standard Time
Antarctica/Casey (UTC+11:00) Casey Time
Pacific/Bougainville (UTC+11:00) GMT+11:00
Asia/Srednekolymsk (UTC+11:00) GMT+11:00
Pacific/Kosrae (UTC+11:00) Kosrae Time
Asia/Magadan (UTC+11:00) Magadan Standard Time
Pacific/Noumea (UTC+11:00) New Caledonia Standard Time
Pacific/Norfolk (UTC+11:00) Norfolk Island Standard Time
Pacific/Pohnpei (UTC+11:00) Ponape Time
Asia/Sakhalin (UTC+11:00) Sakhalin Standard Time
Pacific/Guadalcanal (UTC+11:00) Solomon Islands Time
Pacific/Efate (UTC+11:00) Vanuatu Standard Time
Asia/Anadyr (UTC+12:00) Anadyr Standard Time
Pacific/Fiji (UTC+12:00) Fiji Standard Time
Pacific/Tarawa (UTC+12:00) Gilbert Islands Time
Pacific/Majuro (UTC+12:00) Marshall Islands Time
Pacific/Kwajalein (UTC+12:00) Marshall Islands Time
Pacific/Nauru (UTC+12:00) Nauru Time
Antarctica/McMurdo (UTC+12:00) New Zealand Standard Time
Pacific/Auckland (UTC+12:00) New Zealand Standard Time
Asia/Kamchatka (UTC+12:00) Petropavlovsk-Kamchatski Standard Time
Pacific/Funafuti (UTC+12:00) Tuvalu Time
Pacific/Wake (UTC+12:00) Wake Island Time
Pacific/Wallis (UTC+12:00) Wallis & Futuna Time
Pacific/Chatham (UTC+12:45) Chatham Standard Time
Pacific/Apia (UTC+13:00) Apia Standard Time
Pacific/Enderbury (UTC+13:00) Phoenix Islands Time
Pacific/Fakaofo (UTC+13:00) Tokelau Time
Pacific/Tongatapu (UTC+13:00) Tonga Standard Time
Pacific/Kiritimati (UTC+14:00) Line Islands Time

After

(click to expand)
Id Display Name
Pacific/Niue (UTC-11:00) Niue Time
Pacific/Midway (UTC-11:00) Samoa Standard Time (Midway)
Pacific/Pago_Pago (UTC-11:00) Samoa Standard Time (Pago Pago)
Pacific/Rarotonga (UTC-10:00) Cook Islands Standard Time (Rarotonga)
America/Adak (UTC-10:00) Hawaii-Aleutian Time (Adak)
Pacific/Honolulu (UTC-10:00) Hawaii-Aleutian Time (Honolulu)
Pacific/Tahiti (UTC-10:00) Tahiti Time
Pacific/Marquesas (UTC-09:30) Marquesas Time
America/Anchorage (UTC-09:00) Alaska Time (Anchorage)
America/Juneau (UTC-09:00) Alaska Time (Juneau)
America/Metlakatla (UTC-09:00) Alaska Time (Metlakatla)
America/Nome (UTC-09:00) Alaska Time (Nome)
America/Sitka (UTC-09:00) Alaska Time (Sitka)
America/Yakutat (UTC-09:00) Alaska Time (Yakutat)
Pacific/Gambier (UTC-09:00) Gambier Time
America/Los_Angeles (UTC-08:00) Pacific Time (Los Angeles)
America/Tijuana (UTC-08:00) Pacific Time (Tijuana)
America/Vancouver (UTC-08:00) Pacific Time (Vancouver)
Pacific/Pitcairn (UTC-08:00) Pitcairn Islands Time
America/Chihuahua (UTC-07:00) Mexican Pacific Time (Chihuahua)
America/Hermosillo (UTC-07:00) Mexican Pacific Time (Hermosillo)
America/Mazatlan (UTC-07:00) Mexican Pacific Time (Mazatlan)
America/Boise (UTC-07:00) Mountain Time (Boise)
America/Cambridge_Bay (UTC-07:00) Mountain Time (Cambridge Bay)
America/Creston (UTC-07:00) Mountain Time (Creston)
America/Dawson_Creek (UTC-07:00) Mountain Time (Dawson Creek)
America/Dawson (UTC-07:00) Mountain Time (Dawson)
America/Denver (UTC-07:00) Mountain Time (Denver)
America/Edmonton (UTC-07:00) Mountain Time (Edmonton)
America/Fort_Nelson (UTC-07:00) Mountain Time (Fort Nelson)
America/Inuvik (UTC-07:00) Mountain Time (Inuvik)
America/Ojinaga (UTC-07:00) Mountain Time (Ojinaga)
America/Phoenix (UTC-07:00) Mountain Time (Phoenix)
America/Whitehorse (UTC-07:00) Mountain Time (Whitehorse)
America/Yellowknife (UTC-07:00) Mountain Time (Yellowknife)
America/Bahia_Banderas (UTC-06:00) Central Time (Bahia Banderas)
America/Belize (UTC-06:00) Central Time (Belize)
America/North_Dakota/Beulah (UTC-06:00) Central Time (Beulah, North Dakota)
America/North_Dakota/Center (UTC-06:00) Central Time (Center, North Dakota)
America/Chicago (UTC-06:00) Central Time (Chicago)
America/Costa_Rica (UTC-06:00) Central Time (Costa Rica)
America/El_Salvador (UTC-06:00) Central Time (El Salvador)
America/Guatemala (UTC-06:00) Central Time (Guatemala)
America/Indiana/Knox (UTC-06:00) Central Time (Knox, Indiana)
America/Managua (UTC-06:00) Central Time (Managua)
America/Matamoros (UTC-06:00) Central Time (Matamoros)
America/Menominee (UTC-06:00) Central Time (Menominee)
America/Merida (UTC-06:00) Central Time (Merida)
America/Mexico_City (UTC-06:00) Central Time (Mexico City)
America/Monterrey (UTC-06:00) Central Time (Monterrey)
America/North_Dakota/New_Salem (UTC-06:00) Central Time (New Salem, North Dakota)
America/Rainy_River (UTC-06:00) Central Time (Rainy River)
America/Rankin_Inlet (UTC-06:00) Central Time (Rankin Inlet)
America/Regina (UTC-06:00) Central Time (Regina)
America/Resolute (UTC-06:00) Central Time (Resolute)
America/Swift_Current (UTC-06:00) Central Time (Swift Current)
America/Tegucigalpa (UTC-06:00) Central Time (Tegucigalpa)
America/Indiana/Tell_City (UTC-06:00) Central Time (Tell City, Indiana)
America/Winnipeg (UTC-06:00) Central Time (Winnipeg)
Pacific/Easter (UTC-06:00) Easter Island Time
Pacific/Galapagos (UTC-06:00) Galapagos Time
America/Eirunepe (UTC-05:00) Acre Standard Time (Eirunepe)
America/Rio_Branco (UTC-05:00) Acre Standard Time (Rio Branco)
America/Bogota (UTC-05:00) Colombia Standard Time (Bogota)
America/Havana (UTC-05:00) Cuba Time
America/Atikokan (UTC-05:00) Eastern Time (Atikokan)
America/Cancun (UTC-05:00) Eastern Time (Cancun)
America/Cayman (UTC-05:00) Eastern Time (Cayman)
America/Detroit (UTC-05:00) Eastern Time (Detroit)
America/Grand_Turk (UTC-05:00) Eastern Time (Grand Turk)
America/Indiana/Indianapolis (UTC-05:00) Eastern Time (Indianapolis)
America/Iqaluit (UTC-05:00) Eastern Time (Iqaluit)
America/Jamaica (UTC-05:00) Eastern Time (Jamaica)
America/Kentucky/Louisville (UTC-05:00) Eastern Time (Louisville)
America/Indiana/Marengo (UTC-05:00) Eastern Time (Marengo, Indiana)
America/Kentucky/Monticello (UTC-05:00) Eastern Time (Monticello, Kentucky)
America/Nassau (UTC-05:00) Eastern Time (Nassau)
America/New_York (UTC-05:00) Eastern Time (New York)
America/Nipigon (UTC-05:00) Eastern Time (Nipigon)
America/Panama (UTC-05:00) Eastern Time (Panama)
America/Pangnirtung (UTC-05:00) Eastern Time (Pangnirtung)
America/Indiana/Petersburg (UTC-05:00) Eastern Time (Petersburg, Indiana)
America/Port-au-Prince (UTC-05:00) Eastern Time (Port-au-Prince)
America/Thunder_Bay (UTC-05:00) Eastern Time (Thunder Bay)
America/Toronto (UTC-05:00) Eastern Time (Toronto)
America/Indiana/Vevay (UTC-05:00) Eastern Time (Vevay, Indiana)
America/Indiana/Vincennes (UTC-05:00) Eastern Time (Vincennes, Indiana)
America/Indiana/Winamac (UTC-05:00) Eastern Time (Winamac, Indiana)
America/Guayaquil (UTC-05:00) Ecuador Time
America/Lima (UTC-05:00) Peru Standard Time (Lima)
America/Boa_Vista (UTC-04:00) Amazon Standard Time (Boa Vista)
America/Campo_Grande (UTC-04:00) Amazon Standard Time (Campo Grande)
America/Cuiaba (UTC-04:00) Amazon Standard Time (Cuiaba)
America/Manaus (UTC-04:00) Amazon Standard Time (Manaus)
America/Porto_Velho (UTC-04:00) Amazon Standard Time (Porto Velho)
America/Anguilla (UTC-04:00) Atlantic Time (Anguilla)
America/Antigua (UTC-04:00) Atlantic Time (Antigua)
America/Aruba (UTC-04:00) Atlantic Time (Aruba)
America/Barbados (UTC-04:00) Atlantic Time (Barbados)
Atlantic/Bermuda (UTC-04:00) Atlantic Time (Bermuda)
America/Blanc-Sablon (UTC-04:00) Atlantic Time (Blanc-Sablon)
America/Curacao (UTC-04:00) Atlantic Time (Curaçao)
America/Dominica (UTC-04:00) Atlantic Time (Dominica)
America/Glace_Bay (UTC-04:00) Atlantic Time (Glace Bay)
America/Goose_Bay (UTC-04:00) Atlantic Time (Goose Bay)
America/Grenada (UTC-04:00) Atlantic Time (Grenada)
America/Guadeloupe (UTC-04:00) Atlantic Time (Guadeloupe)
America/Halifax (UTC-04:00) Atlantic Time (Halifax)
America/Kralendijk (UTC-04:00) Atlantic Time (Kralendijk)
America/Lower_Princes (UTC-04:00) Atlantic Time (Lower Prince’s Quarter)
America/Marigot (UTC-04:00) Atlantic Time (Marigot)
America/Martinique (UTC-04:00) Atlantic Time (Martinique)
America/Moncton (UTC-04:00) Atlantic Time (Moncton)
America/Montserrat (UTC-04:00) Atlantic Time (Montserrat)
America/Port_of_Spain (UTC-04:00) Atlantic Time (Port of Spain)
America/Puerto_Rico (UTC-04:00) Atlantic Time (Puerto Rico)
America/Santo_Domingo (UTC-04:00) Atlantic Time (Santo Domingo)
America/St_Barthelemy (UTC-04:00) Atlantic Time (St. Barthélemy)
America/St_Kitts (UTC-04:00) Atlantic Time (St. Kitts)
America/St_Lucia (UTC-04:00) Atlantic Time (St. Lucia)
America/St_Thomas (UTC-04:00) Atlantic Time (St. Thomas)
America/St_Vincent (UTC-04:00) Atlantic Time (St. Vincent)
America/Thule (UTC-04:00) Atlantic Time (Thule)
America/Tortola (UTC-04:00) Atlantic Time (Tortola)
America/La_Paz (UTC-04:00) Bolivia Time
America/Santiago (UTC-04:00) Chile Time
America/Guyana (UTC-04:00) Guyana Time
America/Asuncion (UTC-04:00) Paraguay Time
America/Caracas (UTC-04:00) Venezuela Time
America/St_Johns (UTC-03:30) Newfoundland Time (St. John’s)
America/Argentina/Buenos_Aires (UTC-03:00) Argentina Standard Time (Buenos Aires)
America/Argentina/Catamarca (UTC-03:00) Argentina Standard Time (Catamarca)
America/Argentina/Cordoba (UTC-03:00) Argentina Standard Time (Cordoba)
America/Argentina/Jujuy (UTC-03:00) Argentina Standard Time (Jujuy)
America/Argentina/La_Rioja (UTC-03:00) Argentina Standard Time (La Rioja)
America/Argentina/Mendoza (UTC-03:00) Argentina Standard Time (Mendoza)
America/Argentina/Rio_Gallegos (UTC-03:00) Argentina Standard Time (Rio Gallegos)
America/Argentina/Salta (UTC-03:00) Argentina Standard Time (Salta)
America/Argentina/San_Juan (UTC-03:00) Argentina Standard Time (San Juan)
America/Argentina/San_Luis (UTC-03:00) Argentina Standard Time (San Luis)
America/Argentina/Tucuman (UTC-03:00) Argentina Standard Time (Tucuman)
America/Argentina/Ushuaia (UTC-03:00) Argentina Standard Time (Ushuaia)
America/Araguaina (UTC-03:00) Brasilia Standard Time (Araguaina)
America/Bahia (UTC-03:00) Brasilia Standard Time (Bahia)
America/Belem (UTC-03:00) Brasilia Standard Time (Belem)
America/Fortaleza (UTC-03:00) Brasilia Standard Time (Fortaleza)
America/Maceio (UTC-03:00) Brasilia Standard Time (Maceio)
America/Recife (UTC-03:00) Brasilia Standard Time (Recife)
America/Santarem (UTC-03:00) Brasilia Standard Time (Santarem)
America/Sao_Paulo (UTC-03:00) Brasilia Standard Time (Sao Paulo)
Atlantic/Stanley (UTC-03:00) Falkland Islands Standard Time (Stanley)
America/Cayenne (UTC-03:00) French Guiana Time
Antarctica/Palmer (UTC-03:00) Palmer Time
America/Punta_Arenas (UTC-03:00) Punta Arenas Time
Antarctica/Rothera (UTC-03:00) Rothera Time
America/Miquelon (UTC-03:00) St. Pierre & Miquelon Time
America/Paramaribo (UTC-03:00) Suriname Time
America/Montevideo (UTC-03:00) Uruguay Standard Time (Montevideo)
America/Nuuk (UTC-03:00) West Greenland Time (Nuuk)
America/Noronha (UTC-02:00) Fernando de Noronha Standard Time
Atlantic/South_Georgia (UTC-02:00) South Georgia Time
Atlantic/Azores (UTC-01:00) Azores Time
Atlantic/Cape_Verde (UTC-01:00) Cape Verde Standard Time
America/Scoresbysund (UTC-01:00) East Greenland Time (Ittoqqortoormiit)
UTC (UTC) Coordinated Universal Time
Africa/Ouagadougou (UTC+00:00) Burkina Faso Time
Africa/Abidjan (UTC+00:00) Côte d’Ivoire Time
America/Danmarkshavn (UTC+00:00) Danmarkshavn Time
Africa/Banjul (UTC+00:00) Gambia Time
Africa/Accra (UTC+00:00) Ghana Time
Europe/Guernsey (UTC+00:00) Guernsey Time
Africa/Conakry (UTC+00:00) Guinea Time
Africa/Bissau (UTC+00:00) Guinea-Bissau Time
Atlantic/Reykjavik (UTC+00:00) Iceland Time
Europe/Isle_of_Man (UTC+00:00) Isle of Man Time
Europe/Jersey (UTC+00:00) Jersey Time
Africa/Monrovia (UTC+00:00) Liberia Time
Africa/Bamako (UTC+00:00) Mali Time
Africa/Nouakchott (UTC+00:00) Mauritania Time
Africa/Dakar (UTC+00:00) Senegal Time
Africa/Freetown (UTC+00:00) Sierra Leone Time
Atlantic/St_Helena (UTC+00:00) St. Helena Time
Africa/Sao_Tome (UTC+00:00) São Tomé & Príncipe Time
Africa/Lome (UTC+00:00) Togo Time
Antarctica/Troll (UTC+00:00) Troll Time
Europe/London (UTC+00:00) United Kingdom Time
Atlantic/Canary (UTC+00:00) Western European Time (Canary)
Atlantic/Faroe (UTC+00:00) Western European Time (Faroe)
Europe/Lisbon (UTC+00:00) Western European Time (Lisbon)
Atlantic/Madeira (UTC+00:00) Western European Time (Madeira)
Africa/Algiers (UTC+01:00) Central European Time (Algiers)
Europe/Amsterdam (UTC+01:00) Central European Time (Amsterdam)
Europe/Andorra (UTC+01:00) Central European Time (Andorra)
Europe/Belgrade (UTC+01:00) Central European Time (Belgrade)
Europe/Berlin (UTC+01:00) Central European Time (Berlin)
Europe/Bratislava (UTC+01:00) Central European Time (Bratislava)
Europe/Brussels (UTC+01:00) Central European Time (Brussels)
Europe/Budapest (UTC+01:00) Central European Time (Budapest)
Europe/Busingen (UTC+01:00) Central European Time (Busingen)
Africa/Ceuta (UTC+01:00) Central European Time (Ceuta)
Europe/Copenhagen (UTC+01:00) Central European Time (Copenhagen)
Europe/Gibraltar (UTC+01:00) Central European Time (Gibraltar)
Europe/Ljubljana (UTC+01:00) Central European Time (Ljubljana)
Arctic/Longyearbyen (UTC+01:00) Central European Time (Longyearbyen)
Europe/Luxembourg (UTC+01:00) Central European Time (Luxembourg)
Europe/Madrid (UTC+01:00) Central European Time (Madrid)
Europe/Malta (UTC+01:00) Central European Time (Malta)
Europe/Monaco (UTC+01:00) Central European Time (Monaco)
Europe/Oslo (UTC+01:00) Central European Time (Oslo)
Europe/Paris (UTC+01:00) Central European Time (Paris)
Europe/Podgorica (UTC+01:00) Central European Time (Podgorica)
Europe/Prague (UTC+01:00) Central European Time (Prague)
Europe/Rome (UTC+01:00) Central European Time (Rome)
Europe/San_Marino (UTC+01:00) Central European Time (San Marino)
Europe/Sarajevo (UTC+01:00) Central European Time (Sarajevo)
Europe/Skopje (UTC+01:00) Central European Time (Skopje)
Europe/Stockholm (UTC+01:00) Central European Time (Stockholm)
Europe/Tirane (UTC+01:00) Central European Time (Tirane)
Africa/Tunis (UTC+01:00) Central European Time (Tunis)
Europe/Vaduz (UTC+01:00) Central European Time (Vaduz)
Europe/Vatican (UTC+01:00) Central European Time (Vatican)
Europe/Vienna (UTC+01:00) Central European Time (Vienna)
Europe/Warsaw (UTC+01:00) Central European Time (Warsaw)
Europe/Zagreb (UTC+01:00) Central European Time (Zagreb)
Europe/Zurich (UTC+01:00) Central European Time (Zurich)
Europe/Dublin (UTC+01:00) Ireland Time
Africa/Casablanca (UTC+01:00) Morocco Time
Africa/Bangui (UTC+01:00) West Africa Standard Time (Bangui)
Africa/Brazzaville (UTC+01:00) West Africa Standard Time (Brazzaville)
Africa/Douala (UTC+01:00) West Africa Standard Time (Douala)
Africa/Kinshasa (UTC+01:00) West Africa Standard Time (Kinshasa)
Africa/Lagos (UTC+01:00) West Africa Standard Time (Lagos)
Africa/Libreville (UTC+01:00) West Africa Standard Time (Libreville)
Africa/Luanda (UTC+01:00) West Africa Standard Time (Luanda)
Africa/Malabo (UTC+01:00) West Africa Standard Time (Malabo)
Africa/Ndjamena (UTC+01:00) West Africa Standard Time (Ndjamena)
Africa/Niamey (UTC+01:00) West Africa Standard Time (Niamey)
Africa/Porto-Novo (UTC+01:00) West Africa Standard Time (Porto-Novo)
Africa/El_Aaiun (UTC+01:00) Western Sahara Time
Africa/Blantyre (UTC+02:00) Central Africa Time (Blantyre)
Africa/Bujumbura (UTC+02:00) Central Africa Time (Bujumbura)
Africa/Gaborone (UTC+02:00) Central Africa Time (Gaborone)
Africa/Harare (UTC+02:00) Central Africa Time (Harare)
Africa/Juba (UTC+02:00) Central Africa Time (Juba)
Africa/Khartoum (UTC+02:00) Central Africa Time (Khartoum)
Africa/Kigali (UTC+02:00) Central Africa Time (Kigali)
Africa/Lubumbashi (UTC+02:00) Central Africa Time (Lubumbashi)
Africa/Lusaka (UTC+02:00) Central Africa Time (Lusaka)
Africa/Maputo (UTC+02:00) Central Africa Time (Maputo)
Africa/Windhoek (UTC+02:00) Central Africa Time (Windhoek)
Asia/Amman (UTC+02:00) Eastern European Time (Amman)
Europe/Athens (UTC+02:00) Eastern European Time (Athens)
Asia/Beirut (UTC+02:00) Eastern European Time (Beirut)
Europe/Bucharest (UTC+02:00) Eastern European Time (Bucharest)
Africa/Cairo (UTC+02:00) Eastern European Time (Cairo)
Europe/Chisinau (UTC+02:00) Eastern European Time (Chisinau)
Asia/Damascus (UTC+02:00) Eastern European Time (Damascus)
Asia/Gaza (UTC+02:00) Eastern European Time (Gaza)
Asia/Hebron (UTC+02:00) Eastern European Time (Hebron)
Europe/Helsinki (UTC+02:00) Eastern European Time (Helsinki)
Europe/Kaliningrad (UTC+02:00) Eastern European Time (Kaliningrad)
Europe/Kiev (UTC+02:00) Eastern European Time (Kiev)
Europe/Mariehamn (UTC+02:00) Eastern European Time (Mariehamn)
Asia/Nicosia (UTC+02:00) Eastern European Time (Nicosia)
Europe/Riga (UTC+02:00) Eastern European Time (Riga)
Europe/Sofia (UTC+02:00) Eastern European Time (Sofia)
Europe/Tallinn (UTC+02:00) Eastern European Time (Tallinn)
Africa/Tripoli (UTC+02:00) Eastern European Time (Tripoli)
Europe/Uzhgorod (UTC+02:00) Eastern European Time (Uzhhorod)
Europe/Vilnius (UTC+02:00) Eastern European Time (Vilnius)
Europe/Zaporozhye (UTC+02:00) Eastern European Time (Zaporozhye)
Asia/Famagusta (UTC+02:00) Famagusta Time
Asia/Jerusalem (UTC+02:00) Israel Time
Africa/Johannesburg (UTC+02:00) South Africa Standard Time (Johannesburg)
Africa/Maseru (UTC+02:00) South Africa Standard Time (Maseru)
Africa/Mbabane (UTC+02:00) South Africa Standard Time (Mbabane)
Asia/Aden (UTC+03:00) Arabian Standard Time (Aden)
Asia/Baghdad (UTC+03:00) Arabian Standard Time (Baghdad)
Asia/Bahrain (UTC+03:00) Arabian Standard Time (Bahrain)
Asia/Kuwait (UTC+03:00) Arabian Standard Time (Kuwait)
Asia/Qatar (UTC+03:00) Arabian Standard Time (Qatar)
Asia/Riyadh (UTC+03:00) Arabian Standard Time (Riyadh)
Europe/Minsk (UTC+03:00) Belarus Time
Africa/Addis_Ababa (UTC+03:00) East Africa Time (Addis Ababa)
Indian/Antananarivo (UTC+03:00) East Africa Time (Antananarivo)
Africa/Asmara (UTC+03:00) East Africa Time (Asmara)
Indian/Comoro (UTC+03:00) East Africa Time (Comoro)
Africa/Dar_es_Salaam (UTC+03:00) East Africa Time (Dar es Salaam)
Africa/Djibouti (UTC+03:00) East Africa Time (Djibouti)
Africa/Kampala (UTC+03:00) East Africa Time (Kampala)
Indian/Mayotte (UTC+03:00) East Africa Time (Mayotte)
Africa/Mogadishu (UTC+03:00) East Africa Time (Mogadishu)
Africa/Nairobi (UTC+03:00) East Africa Time (Nairobi)
Europe/Kirov (UTC+03:00) Kirov Time
Europe/Moscow (UTC+03:00) Moscow Time
Europe/Simferopol (UTC+03:00) Simferopol Time
Antarctica/Syowa (UTC+03:00) Syowa Time
Europe/Istanbul (UTC+03:00) Turkey Time
Europe/Volgograd (UTC+03:00) Volgograd Standard Time
Asia/Tehran (UTC+03:30) Iran Time
Asia/Yerevan (UTC+04:00) Armenia Standard Time (Yerevan)
Europe/Astrakhan (UTC+04:00) Astrakhan Time
Asia/Baku (UTC+04:00) Azerbaijan Standard Time (Baku)
Asia/Tbilisi (UTC+04:00) Georgia Standard Time (Tbilisi)
Asia/Dubai (UTC+04:00) Gulf Standard Time (Dubai)
Asia/Muscat (UTC+04:00) Gulf Standard Time (Muscat)
Indian/Mauritius (UTC+04:00) Mauritius Standard Time
Indian/Reunion (UTC+04:00) Réunion Time
Europe/Samara (UTC+04:00) Samara Standard Time
Europe/Saratov (UTC+04:00) Saratov Time
Indian/Mahe (UTC+04:00) Seychelles Time
Europe/Ulyanovsk (UTC+04:00) Ulyanovsk Time
Asia/Kabul (UTC+04:30) Afghanistan Time
Indian/Kerguelen (UTC+05:00) French Southern & Antarctic Time (Kerguelen)
Indian/Maldives (UTC+05:00) Maldives Time
Antarctica/Mawson (UTC+05:00) Mawson Time
Asia/Karachi (UTC+05:00) Pakistan Standard Time (Karachi)
Asia/Dushanbe (UTC+05:00) Tajikistan Time
Asia/Ashgabat (UTC+05:00) Turkmenistan Standard Time (Ashgabat)
Asia/Samarkand (UTC+05:00) Uzbekistan Standard Time (Samarkand)
Asia/Tashkent (UTC+05:00) Uzbekistan Standard Time (Tashkent)
Asia/Aqtau (UTC+05:00) West Kazakhstan Time (Aqtau)
Asia/Aqtobe (UTC+05:00) West Kazakhstan Time (Aqtobe)
Asia/Atyrau (UTC+05:00) West Kazakhstan Time (Atyrau)
Asia/Oral (UTC+05:00) West Kazakhstan Time (Oral)
Asia/Qyzylorda (UTC+05:00) West Kazakhstan Time (Qyzylorda)
Asia/Yekaterinburg (UTC+05:00) Yekaterinburg Standard Time
Asia/Colombo (UTC+05:30) India Standard Time (Colombo)
Asia/Kolkata (UTC+05:30) India Standard Time (Kolkata)
Asia/Kathmandu (UTC+05:45) Nepal Time
Asia/Dhaka (UTC+06:00) Bangladesh Standard Time (Dhaka)
Asia/Thimphu (UTC+06:00) Bhutan Time
Asia/Almaty (UTC+06:00) East Kazakhstan Time (Almaty)
Asia/Qostanay (UTC+06:00) East Kazakhstan Time (Kostanay)
Indian/Chagos (UTC+06:00) Indian Ocean Time (Chagos)
Asia/Bishkek (UTC+06:00) Kyrgyzstan Time
Asia/Omsk (UTC+06:00) Omsk Standard Time
Asia/Urumqi (UTC+06:00) Urumqi Time
Antarctica/Vostok (UTC+06:00) Vostok Time
Indian/Cocos (UTC+06:30) Cocos Islands Time
Asia/Yangon (UTC+06:30) Myanmar Time (Yangon)
Asia/Barnaul (UTC+07:00) Barnaul Time
Indian/Christmas (UTC+07:00) Christmas Island Time
Antarctica/Davis (UTC+07:00) Davis Time
Asia/Hovd (UTC+07:00) Hovd Standard Time
Asia/Bangkok (UTC+07:00) Indochina Time (Bangkok)
Asia/Ho_Chi_Minh (UTC+07:00) Indochina Time (Ho Chi Minh City)
Asia/Phnom_Penh (UTC+07:00) Indochina Time (Phnom Penh)
Asia/Vientiane (UTC+07:00) Indochina Time (Vientiane)
Asia/Krasnoyarsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Novokuznetsk (UTC+07:00) Krasnoyarsk Standard Time (Novokuznetsk)
Asia/Novosibirsk (UTC+07:00) Novosibirsk Standard Time
Asia/Tomsk (UTC+07:00) Tomsk Time
Asia/Jakarta (UTC+07:00) Western Indonesia Time (Jakarta)
Asia/Pontianak (UTC+07:00) Western Indonesia Time (Pontianak)
Australia/Perth (UTC+08:00) Australian Western Standard Time (Perth)
Asia/Brunei (UTC+08:00) Brunei Darussalam Time
Asia/Makassar (UTC+08:00) Central Indonesia Time (Makassar)
Asia/Macau (UTC+08:00) China Standard Time (Macao)
Asia/Shanghai (UTC+08:00) China Standard Time (Shanghai)
Asia/Hong_Kong (UTC+08:00) Hong Kong Standard Time
Asia/Irkutsk (UTC+08:00) Irkutsk Standard Time
Asia/Kuala_Lumpur (UTC+08:00) Malaysia Time
Asia/Kuching (UTC+08:00) Malaysia Time (Kuching)
Asia/Manila (UTC+08:00) Philippine Standard Time (Manila)
Asia/Singapore (UTC+08:00) Singapore Standard Time
Asia/Taipei (UTC+08:00) Taipei Standard Time
Asia/Ulaanbaatar (UTC+08:00) Ulaanbaatar Standard Time
Asia/Choibalsan (UTC+08:00) Ulaanbaatar Standard Time (Choibalsan)
Australia/Eucla (UTC+08:45) Australian Central Western Standard Time (Eucla)
Asia/Dili (UTC+09:00) East Timor Time (Dili)
Asia/Jayapura (UTC+09:00) Eastern Indonesia Time (Jayapura)
Asia/Tokyo (UTC+09:00) Japan Standard Time (Tokyo)
Asia/Pyongyang (UTC+09:00) Korean Standard Time (Pyongyang)
Asia/Seoul (UTC+09:00) Korean Standard Time (Seoul)
Pacific/Palau (UTC+09:00) Palau Time
Asia/Yakutsk (UTC+09:00) Yakutsk Standard Time
Asia/Chita (UTC+09:00) Yakutsk Standard Time (Chita)
Asia/Khandyga (UTC+09:00) Yakutsk Standard Time (Khandyga)
Australia/Adelaide (UTC+09:30) Central Australia Time (Adelaide)
Australia/Broken_Hill (UTC+09:30) Central Australia Time (Broken Hill)
Australia/Darwin (UTC+09:30) Central Australia Time (Darwin)
Pacific/Guam (UTC+10:00) Chamorro Standard Time (Guam)
Pacific/Saipan (UTC+10:00) Chamorro Standard Time (Saipan)
Pacific/Chuuk (UTC+10:00) Chuuk Time
Antarctica/DumontDUrville (UTC+10:00) Dumont-d’Urville Time (Dumont d’Urville)
Australia/Brisbane (UTC+10:00) Eastern Australia Time (Brisbane)
Australia/Hobart (UTC+10:00) Eastern Australia Time (Hobart)
Australia/Lindeman (UTC+10:00) Eastern Australia Time (Lindeman)
Antarctica/Macquarie (UTC+10:00) Eastern Australia Time (Macquarie)
Australia/Melbourne (UTC+10:00) Eastern Australia Time (Melbourne)
Australia/Sydney (UTC+10:00) Eastern Australia Time (Sydney)
Pacific/Port_Moresby (UTC+10:00) Papua New Guinea Time (Port Moresby)
Asia/Vladivostok (UTC+10:00) Vladivostok Standard Time
Asia/Ust-Nera (UTC+10:00) Vladivostok Standard Time (Ust-Nera)
Australia/Lord_Howe (UTC+10:30) Lord Howe Time
Pacific/Bougainville (UTC+11:00) Bougainville Time
Antarctica/Casey (UTC+11:00) Casey Time
Pacific/Kosrae (UTC+11:00) Kosrae Time
Asia/Magadan (UTC+11:00) Magadan Standard Time
Pacific/Noumea (UTC+11:00) New Caledonia Standard Time (Noumea)
Pacific/Norfolk (UTC+11:00) Norfolk Island Time
Pacific/Pohnpei (UTC+11:00) Ponape Time (Pohnpei)
Asia/Sakhalin (UTC+11:00) Sakhalin Standard Time
Pacific/Guadalcanal (UTC+11:00) Solomon Islands Time
Asia/Srednekolymsk (UTC+11:00) Srednekolymsk Time
Pacific/Efate (UTC+11:00) Vanuatu Standard Time (Efate)
Asia/Anadyr (UTC+12:00) Anadyr Standard Time
Pacific/Fiji (UTC+12:00) Fiji Time
Pacific/Tarawa (UTC+12:00) Gilbert Islands Time (Tarawa)
Pacific/Majuro (UTC+12:00) Marshall Islands Time
Pacific/Kwajalein (UTC+12:00) Marshall Islands Time (Kwajalein)
Pacific/Nauru (UTC+12:00) Nauru Time
Pacific/Auckland (UTC+12:00) New Zealand Time
Antarctica/McMurdo (UTC+12:00) New Zealand Time (McMurdo)
Asia/Kamchatka (UTC+12:00) Petropavlovsk-Kamchatski Standard Time (Kamchatka)
Pacific/Funafuti (UTC+12:00) Tuvalu Time
Pacific/Wake (UTC+12:00) Wake Island Time
Pacific/Wallis (UTC+12:00) Wallis & Futuna Time
Pacific/Chatham (UTC+12:45) Chatham Time
Pacific/Enderbury (UTC+13:00) Phoenix Islands Time (Enderbury)
Pacific/Apia (UTC+13:00) Samoa Time
Pacific/Fakaofo (UTC+13:00) Tokelau Time
Pacific/Tongatapu (UTC+13:00) Tonga Standard Time (Tongatapu)
Pacific/Kiritimati (UTC+14:00) Line Islands Time (Kiritimati)

The above lists were generated with this simple program:

using System;
using System.Linq;

namespace ListTimeZones
{
    class Program
    {
        static void Main(string[] args)
        {
            var timeZones = TimeZoneInfo.GetSystemTimeZones();

            int col1Size = timeZones.Max(x => x.Id.Length);
            int col2Size = timeZones.Max(x => x.DisplayName.Length);
            Console.WriteLine("| " + "Id".PadRight(col1Size) + " | " + "Display Name".PadRight(col2Size) + " |");
            Console.WriteLine("| " + new string('-', col1Size) + " | " + new string('-', col2Size) + " |");
            foreach (TimeZoneInfo tzi in timeZones)
            {
                Console.WriteLine($"| {tzi.Id.PadRight(col1Size)} | {tzi.DisplayName.PadRight(col2Size)} |");
            }

            Console.WriteLine();
        }
    }
}

@ghost
Copy link

ghost commented Mar 2, 2021

Tagging subscribers to this area: @tarekgh, @safern
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR tackles the problem described in #16232, addressing a long-unresolved TODO comment in the Unix implementation of setting the value for TimeZoneInfo.DisplayName.

While its still true that ICU doesn't expose the generic name via the ucal_getTimeZoneDisplayName function, we can get at various forms of the generic name via the udat_format function instead, by formatting the a datetime with patterns. The ICU date field symbol table gives several different patterns that are useful to us:

  • vvvv - The generic non-location time zone name (ex: "Pacific Time")
  • VVVV - The generic time zone location name (ex: "Los Angeles Time")
  • VVV - The exemplar city associated with the time zone (ex: "Los Angeles")

In my implementation, each is retrieved separately in native code, then they are combined with the base UTC offset in managed code. They are combined in various ways to produce a final DisplayName for the time zone that is unique, discoverable, and intuitive when presenting a list.

Even with access to these strings, there are several edge cases that have to be handled. Most are in the managed code in TimeZoneInfo.Unix.cs, and one is handled in native code in pal_timeZoneInfo.c. They are documented in the code comments.

Below are the time zones before and after this change (Ubuntu 20.10, ICU 67.1-4, en-US). Observe from the "before" list, the problem of not being able to distinguish one time zone from another by looking only at the DisplayName. For example, there were 13 different time zones that had the same string (UTC-07:00) Mountain Standard Time. That was very problematic for an end-user to choose a time zone.

I also addressed a related issue, which was that the UTC time zone not using localized display names, but was fixed to the English "Coordinated Universal Time" on both Unix and Windows. It is now localized using the same locale as the other names (using the OS language on Windows, and using CurrentUICulture on Unix).


Before

(click to expand)
Id Display Name
Pacific/Niue (UTC-11:00) Niue Time
Pacific/Pago_Pago (UTC-11:00) Samoa Standard Time
Pacific/Midway (UTC-11:00) Samoa Standard Time
Pacific/Rarotonga (UTC-10:00) Cook Islands Standard Time
Pacific/Honolulu (UTC-10:00) Hawaii-Aleutian Standard Time
America/Adak (UTC-10:00) Hawaii-Aleutian Standard Time
Pacific/Tahiti (UTC-10:00) Tahiti Time
Pacific/Marquesas (UTC-09:30) Marquesas Time
America/Metlakatla (UTC-09:00) Alaska Standard Time
America/Sitka (UTC-09:00) Alaska Standard Time
America/Juneau (UTC-09:00) Alaska Standard Time
America/Yakutat (UTC-09:00) Alaska Standard Time
America/Anchorage (UTC-09:00) Alaska Standard Time
America/Nome (UTC-09:00) Alaska Standard Time
Pacific/Gambier (UTC-09:00) Gambier Time
America/Los_Angeles (UTC-08:00) Pacific Standard Time
America/Vancouver (UTC-08:00) Pacific Standard Time
America/Tijuana (UTC-08:00) Pacific Standard Time
Pacific/Pitcairn (UTC-08:00) Pitcairn Time
America/Hermosillo (UTC-07:00) Mexican Pacific Standard Time
America/Mazatlan (UTC-07:00) Mexican Pacific Standard Time
America/Chihuahua (UTC-07:00) Mexican Pacific Standard Time
America/Phoenix (UTC-07:00) Mountain Standard Time
America/Boise (UTC-07:00) Mountain Standard Time
America/Denver (UTC-07:00) Mountain Standard Time
America/Yellowknife (UTC-07:00) Mountain Standard Time
America/Ojinaga (UTC-07:00) Mountain Standard Time
America/Inuvik (UTC-07:00) Mountain Standard Time
America/Whitehorse (UTC-07:00) Mountain Standard Time
America/Edmonton (UTC-07:00) Mountain Standard Time
America/Creston (UTC-07:00) Mountain Standard Time
America/Cambridge_Bay (UTC-07:00) Mountain Standard Time
America/Dawson_Creek (UTC-07:00) Mountain Standard Time
America/Dawson (UTC-07:00) Mountain Standard Time
America/Fort_Nelson (UTC-07:00) Mountain Standard Time
America/Guatemala (UTC-06:00) Central Standard Time
America/Swift_Current (UTC-06:00) Central Standard Time
America/Indiana/Knox (UTC-06:00) Central Standard Time
America/Rankin_Inlet (UTC-06:00) Central Standard Time
America/Mexico_City (UTC-06:00) Central Standard Time
America/Chicago (UTC-06:00) Central Standard Time
America/Matamoros (UTC-06:00) Central Standard Time
America/Indiana/Tell_City (UTC-06:00) Central Standard Time
America/Tegucigalpa (UTC-06:00) Central Standard Time
America/Regina (UTC-06:00) Central Standard Time
America/North_Dakota/Center (UTC-06:00) Central Standard Time
America/Costa_Rica (UTC-06:00) Central Standard Time
America/North_Dakota/New_Salem (UTC-06:00) Central Standard Time
America/North_Dakota/Beulah (UTC-06:00) Central Standard Time
America/Resolute (UTC-06:00) Central Standard Time
America/Rainy_River (UTC-06:00) Central Standard Time
America/El_Salvador (UTC-06:00) Central Standard Time
America/Winnipeg (UTC-06:00) Central Standard Time
America/Merida (UTC-06:00) Central Standard Time
America/Monterrey (UTC-06:00) Central Standard Time
America/Managua (UTC-06:00) Central Standard Time
America/Belize (UTC-06:00) Central Standard Time
America/Menominee (UTC-06:00) Central Standard Time
America/Bahia_Banderas (UTC-06:00) Central Standard Time
Pacific/Easter (UTC-06:00) Easter Island Standard Time
Pacific/Galapagos (UTC-06:00) Galapagos Time
America/Eirunepe (UTC-05:00) Acre Standard Time
America/Rio_Branco (UTC-05:00) Acre Standard Time
America/Bogota (UTC-05:00) Colombia Standard Time
America/Havana (UTC-05:00) Cuba Standard Time
America/Cayman (UTC-05:00) Eastern Standard Time
America/Port-au-Prince (UTC-05:00) Eastern Standard Time
America/Jamaica (UTC-05:00) Eastern Standard Time
America/Cancun (UTC-05:00) Eastern Standard Time
America/Atikokan (UTC-05:00) Eastern Standard Time
America/Pangnirtung (UTC-05:00) Eastern Standard Time
America/Iqaluit (UTC-05:00) Eastern Standard Time
America/Thunder_Bay (UTC-05:00) Eastern Standard Time
America/Nipigon (UTC-05:00) Eastern Standard Time
America/Toronto (UTC-05:00) Eastern Standard Time
America/Grand_Turk (UTC-05:00) Eastern Standard Time
America/New_York (UTC-05:00) Eastern Standard Time
America/Panama (UTC-05:00) Eastern Standard Time
America/Kentucky/Louisville (UTC-05:00) Eastern Standard Time
America/Indiana/Indianapolis (UTC-05:00) Eastern Standard Time
America/Kentucky/Monticello (UTC-05:00) Eastern Standard Time
America/Nassau (UTC-05:00) Eastern Standard Time
America/Indiana/Winamac (UTC-05:00) Eastern Standard Time
America/Indiana/Marengo (UTC-05:00) Eastern Standard Time
America/Indiana/Petersburg (UTC-05:00) Eastern Standard Time
America/Detroit (UTC-05:00) Eastern Standard Time
America/Indiana/Vincennes (UTC-05:00) Eastern Standard Time
America/Indiana/Vevay (UTC-05:00) Eastern Standard Time
America/Guayaquil (UTC-05:00) Ecuador Time
America/Lima (UTC-05:00) Peru Standard Time
America/Porto_Velho (UTC-04:00) Amazon Standard Time
America/Manaus (UTC-04:00) Amazon Standard Time
America/Campo_Grande (UTC-04:00) Amazon Standard Time
America/Boa_Vista (UTC-04:00) Amazon Standard Time
America/Cuiaba (UTC-04:00) Amazon Standard Time
America/Santo_Domingo (UTC-04:00) Atlantic Standard Time
America/Dominica (UTC-04:00) Atlantic Standard Time
America/Lower_Princes (UTC-04:00) Atlantic Standard Time
America/Curacao (UTC-04:00) Atlantic Standard Time
America/Port_of_Spain (UTC-04:00) Atlantic Standard Time
America/Puerto_Rico (UTC-04:00) Atlantic Standard Time
America/St_Kitts (UTC-04:00) Atlantic Standard Time
America/Guadeloupe (UTC-04:00) Atlantic Standard Time
America/Thule (UTC-04:00) Atlantic Standard Time
America/Grenada (UTC-04:00) Atlantic Standard Time
America/Martinique (UTC-04:00) Atlantic Standard Time
America/Goose_Bay (UTC-04:00) Atlantic Standard Time
Atlantic/Bermuda (UTC-04:00) Atlantic Standard Time
America/Kralendijk (UTC-04:00) Atlantic Standard Time
America/Barbados (UTC-04:00) Atlantic Standard Time
America/St_Vincent (UTC-04:00) Atlantic Standard Time
America/Blanc-Sablon (UTC-04:00) Atlantic Standard Time
America/Marigot (UTC-04:00) Atlantic Standard Time
America/St_Barthelemy (UTC-04:00) Atlantic Standard Time
America/Anguilla (UTC-04:00) Atlantic Standard Time
America/Tortola (UTC-04:00) Atlantic Standard Time
America/St_Thomas (UTC-04:00) Atlantic Standard Time
America/Montserrat (UTC-04:00) Atlantic Standard Time
America/Aruba (UTC-04:00) Atlantic Standard Time
America/Halifax (UTC-04:00) Atlantic Standard Time
America/Glace_Bay (UTC-04:00) Atlantic Standard Time
America/Moncton (UTC-04:00) Atlantic Standard Time
America/Antigua (UTC-04:00) Atlantic Standard Time
America/St_Lucia (UTC-04:00) Atlantic Standard Time
America/La_Paz (UTC-04:00) Bolivia Time
America/Santiago (UTC-04:00) Chile Standard Time
America/Guyana (UTC-04:00) Guyana Time
America/Asuncion (UTC-04:00) Paraguay Standard Time
America/Caracas (UTC-04:00) Venezuela Time
America/St_Johns (UTC-03:30) Newfoundland Standard Time
America/Argentina/Buenos_Aires (UTC-03:00) Argentina Standard Time
America/Argentina/Salta (UTC-03:00) Argentina Standard Time
America/Argentina/Jujuy (UTC-03:00) Argentina Standard Time
America/Argentina/Tucuman (UTC-03:00) Argentina Standard Time
America/Argentina/Cordoba (UTC-03:00) Argentina Standard Time
America/Argentina/Catamarca (UTC-03:00) Argentina Standard Time
America/Argentina/Mendoza (UTC-03:00) Argentina Standard Time
America/Argentina/San_Juan (UTC-03:00) Argentina Standard Time
America/Argentina/San_Luis (UTC-03:00) Argentina Standard Time
America/Argentina/Rio_Gallegos (UTC-03:00) Argentina Standard Time
America/Argentina/Ushuaia (UTC-03:00) Argentina Standard Time
America/Argentina/La_Rioja (UTC-03:00) Argentina Standard Time
America/Santarem (UTC-03:00) Brasilia Standard Time
America/Sao_Paulo (UTC-03:00) Brasilia Standard Time
America/Bahia (UTC-03:00) Brasilia Standard Time
America/Maceio (UTC-03:00) Brasilia Standard Time
America/Araguaina (UTC-03:00) Brasilia Standard Time
America/Recife (UTC-03:00) Brasilia Standard Time
America/Fortaleza (UTC-03:00) Brasilia Standard Time
America/Belem (UTC-03:00) Brasilia Standard Time
Atlantic/Stanley (UTC-03:00) Falkland Islands Standard Time
America/Cayenne (UTC-03:00) French Guiana Time
Antarctica/Palmer (UTC-03:00) GMT-03:00
America/Punta_Arenas (UTC-03:00) GMT-03:00
Antarctica/Rothera (UTC-03:00) Rothera Time
America/Miquelon (UTC-03:00) St. Pierre & Miquelon Standard Time
America/Paramaribo (UTC-03:00) Suriname Time
America/Montevideo (UTC-03:00) Uruguay Standard Time
America/Nuuk (UTC-03:00) West Greenland Standard Time
America/Noronha (UTC-02:00) Fernando de Noronha Standard Time
Atlantic/South_Georgia (UTC-02:00) South Georgia Time
Atlantic/Azores (UTC-01:00) Azores Standard Time
Atlantic/Cape_Verde (UTC-01:00) Cape Verde Standard Time
America/Scoresbysund (UTC-01:00) East Greenland Standard Time
UTC (UTC) Coordinated Universal Time
Africa/Accra (UTC+00:00) Greenwich Mean Time
Africa/Sao_Tome (UTC+00:00) Greenwich Mean Time
Africa/Ouagadougou (UTC+00:00) Greenwich Mean Time
Africa/Monrovia (UTC+00:00) Greenwich Mean Time
Africa/Lome (UTC+00:00) Greenwich Mean Time
Atlantic/Reykjavik (UTC+00:00) Greenwich Mean Time
Antarctica/Troll (UTC+00:00) Greenwich Mean Time
Africa/Dakar (UTC+00:00) Greenwich Mean Time
Atlantic/St_Helena (UTC+00:00) Greenwich Mean Time
Africa/Abidjan (UTC+00:00) Greenwich Mean Time
Europe/Isle_of_Man (UTC+00:00) Greenwich Mean Time
Europe/Jersey (UTC+00:00) Greenwich Mean Time
Africa/Bissau (UTC+00:00) Greenwich Mean Time
Africa/Nouakchott (UTC+00:00) Greenwich Mean Time
Africa/Conakry (UTC+00:00) Greenwich Mean Time
Africa/Banjul (UTC+00:00) Greenwich Mean Time
Europe/London (UTC+00:00) Greenwich Mean Time
America/Danmarkshavn (UTC+00:00) Greenwich Mean Time
Europe/Guernsey (UTC+00:00) Greenwich Mean Time
Africa/Bamako (UTC+00:00) Greenwich Mean Time
Africa/Freetown (UTC+00:00) Greenwich Mean Time
Atlantic/Faroe (UTC+00:00) Western European Standard Time
Europe/Lisbon (UTC+00:00) Western European Standard Time
Atlantic/Madeira (UTC+00:00) Western European Standard Time
Atlantic/Canary (UTC+00:00) Western European Standard Time
Europe/Amsterdam (UTC+01:00) Central European Standard Time
Europe/Oslo (UTC+01:00) Central European Standard Time
Africa/Tunis (UTC+01:00) Central European Standard Time
Europe/Zurich (UTC+01:00) Central European Standard Time
Europe/Vienna (UTC+01:00) Central European Standard Time
Europe/Brussels (UTC+01:00) Central European Standard Time
Europe/Sarajevo (UTC+01:00) Central European Standard Time
Europe/Luxembourg (UTC+01:00) Central European Standard Time
Europe/Vatican (UTC+01:00) Central European Standard Time
Europe/Monaco (UTC+01:00) Central European Standard Time
Europe/Podgorica (UTC+01:00) Central European Standard Time
Europe/Tirane (UTC+01:00) Central European Standard Time
Europe/Malta (UTC+01:00) Central European Standard Time
Europe/Andorra (UTC+01:00) Central European Standard Time
Europe/Skopje (UTC+01:00) Central European Standard Time
Europe/Vaduz (UTC+01:00) Central European Standard Time
Europe/Prague (UTC+01:00) Central European Standard Time
Europe/Copenhagen (UTC+01:00) Central European Standard Time
Europe/Busingen (UTC+01:00) Central European Standard Time
Europe/Stockholm (UTC+01:00) Central European Standard Time
Europe/San_Marino (UTC+01:00) Central European Standard Time
Europe/Berlin (UTC+01:00) Central European Standard Time
Europe/Belgrade (UTC+01:00) Central European Standard Time
Europe/Ljubljana (UTC+01:00) Central European Standard Time
Arctic/Longyearbyen (UTC+01:00) Central European Standard Time
Europe/Budapest (UTC+01:00) Central European Standard Time
Europe/Paris (UTC+01:00) Central European Standard Time
Africa/Ceuta (UTC+01:00) Central European Standard Time
Europe/Bratislava (UTC+01:00) Central European Standard Time
Europe/Rome (UTC+01:00) Central European Standard Time
Europe/Madrid (UTC+01:00) Central European Standard Time
Africa/Algiers (UTC+01:00) Central European Standard Time
Europe/Warsaw (UTC+01:00) Central European Standard Time
Europe/Gibraltar (UTC+01:00) Central European Standard Time
Europe/Zagreb (UTC+01:00) Central European Standard Time
Africa/Casablanca (UTC+01:00) GMT
Africa/El_Aaiun (UTC+01:00) GMT
Europe/Dublin (UTC+01:00) Greenwich Mean Time
Africa/Malabo (UTC+01:00) West Africa Standard Time
Africa/Luanda (UTC+01:00) West Africa Standard Time
Africa/Libreville (UTC+01:00) West Africa Standard Time
Africa/Douala (UTC+01:00) West Africa Standard Time
Africa/Porto-Novo (UTC+01:00) West Africa Standard Time
Africa/Kinshasa (UTC+01:00) West Africa Standard Time
Africa/Bangui (UTC+01:00) West Africa Standard Time
Africa/Brazzaville (UTC+01:00) West Africa Standard Time
Africa/Niamey (UTC+01:00) West Africa Standard Time
Africa/Lagos (UTC+01:00) West Africa Standard Time
Africa/Ndjamena (UTC+01:00) West Africa Standard Time
Africa/Khartoum (UTC+02:00) Central Africa Time
Africa/Maputo (UTC+02:00) Central Africa Time
Africa/Blantyre (UTC+02:00) Central Africa Time
Africa/Windhoek (UTC+02:00) Central Africa Time
Africa/Juba (UTC+02:00) Central Africa Time
Africa/Kigali (UTC+02:00) Central Africa Time
Africa/Harare (UTC+02:00) Central Africa Time
Africa/Lubumbashi (UTC+02:00) Central Africa Time
Africa/Bujumbura (UTC+02:00) Central Africa Time
Africa/Gaborone (UTC+02:00) Central Africa Time
Africa/Lusaka (UTC+02:00) Central Africa Time
Europe/Helsinki (UTC+02:00) Eastern European Standard Time
Europe/Kiev (UTC+02:00) Eastern European Standard Time
Europe/Uzhgorod (UTC+02:00) Eastern European Standard Time
Europe/Athens (UTC+02:00) Eastern European Standard Time
Europe/Zaporozhye (UTC+02:00) Eastern European Standard Time
Europe/Mariehamn (UTC+02:00) Eastern European Standard Time
Asia/Damascus (UTC+02:00) Eastern European Standard Time
Europe/Tallinn (UTC+02:00) Eastern European Standard Time
Europe/Kaliningrad (UTC+02:00) Eastern European Standard Time
Europe/Sofia (UTC+02:00) Eastern European Standard Time
Asia/Hebron (UTC+02:00) Eastern European Standard Time
Asia/Gaza (UTC+02:00) Eastern European Standard Time
Asia/Amman (UTC+02:00) Eastern European Standard Time
Africa/Cairo (UTC+02:00) Eastern European Standard Time
Europe/Bucharest (UTC+02:00) Eastern European Standard Time
Asia/Nicosia (UTC+02:00) Eastern European Standard Time
Europe/Chisinau (UTC+02:00) Eastern European Standard Time
Europe/Riga (UTC+02:00) Eastern European Standard Time
Europe/Vilnius (UTC+02:00) Eastern European Standard Time
Africa/Tripoli (UTC+02:00) Eastern European Standard Time
Asia/Beirut (UTC+02:00) Eastern European Standard Time
Asia/Famagusta (UTC+02:00) GMT+02:00
Asia/Jerusalem (UTC+02:00) Israel Standard Time
Africa/Mbabane (UTC+02:00) South Africa Standard Time
Africa/Johannesburg (UTC+02:00) South Africa Standard Time
Africa/Maseru (UTC+02:00) South Africa Standard Time
Asia/Bahrain (UTC+03:00) Arabian Standard Time
Asia/Aden (UTC+03:00) Arabian Standard Time
Asia/Baghdad (UTC+03:00) Arabian Standard Time
Asia/Kuwait (UTC+03:00) Arabian Standard Time
Asia/Riyadh (UTC+03:00) Arabian Standard Time
Asia/Qatar (UTC+03:00) Arabian Standard Time
Africa/Dar_es_Salaam (UTC+03:00) East Africa Time
Indian/Antananarivo (UTC+03:00) East Africa Time
Africa/Kampala (UTC+03:00) East Africa Time
Africa/Mogadishu (UTC+03:00) East Africa Time
Africa/Nairobi (UTC+03:00) East Africa Time
Indian/Comoro (UTC+03:00) East Africa Time
Africa/Djibouti (UTC+03:00) East Africa Time
Africa/Addis_Ababa (UTC+03:00) East Africa Time
Indian/Mayotte (UTC+03:00) East Africa Time
Africa/Asmara (UTC+03:00) East Africa Time
Europe/Istanbul (UTC+03:00) GMT+03:00
Europe/Kirov (UTC+03:00) GMT+03:00
Europe/Simferopol (UTC+03:00) Moscow Standard Time
Europe/Moscow (UTC+03:00) Moscow Standard Time
Europe/Minsk (UTC+03:00) Moscow Standard Time
Antarctica/Syowa (UTC+03:00) Syowa Time
Europe/Volgograd (UTC+03:00) Volgograd Standard Time
Asia/Tehran (UTC+03:30) Iran Standard Time
Asia/Yerevan (UTC+04:00) Armenia Standard Time
Asia/Baku (UTC+04:00) Azerbaijan Standard Time
Europe/Saratov (UTC+04:00) GMT+04:00
Europe/Astrakhan (UTC+04:00) GMT+04:00
Europe/Ulyanovsk (UTC+04:00) GMT+04:00
Asia/Tbilisi (UTC+04:00) Georgia Standard Time
Asia/Muscat (UTC+04:00) Gulf Standard Time
Asia/Dubai (UTC+04:00) Gulf Standard Time
Indian/Mauritius (UTC+04:00) Mauritius Standard Time
Indian/Reunion (UTC+04:00) Réunion Time
Europe/Samara (UTC+04:00) Samara Standard Time
Indian/Mahe (UTC+04:00) Seychelles Time
Asia/Kabul (UTC+04:30) Afghanistan Time
Indian/Kerguelen (UTC+05:00) French Southern & Antarctic Time
Indian/Maldives (UTC+05:00) Maldives Time
Antarctica/Mawson (UTC+05:00) Mawson Time
Asia/Karachi (UTC+05:00) Pakistan Standard Time
Asia/Dushanbe (UTC+05:00) Tajikistan Time
Asia/Ashgabat (UTC+05:00) Turkmenistan Standard Time
Asia/Tashkent (UTC+05:00) Uzbekistan Standard Time
Asia/Samarkand (UTC+05:00) Uzbekistan Standard Time
Asia/Aqtau (UTC+05:00) West Kazakhstan Time
Asia/Qyzylorda (UTC+05:00) West Kazakhstan Time
Asia/Aqtobe (UTC+05:00) West Kazakhstan Time
Asia/Oral (UTC+05:00) West Kazakhstan Time
Asia/Atyrau (UTC+05:00) West Kazakhstan Time
Asia/Yekaterinburg (UTC+05:00) Yekaterinburg Standard Time
Asia/Kolkata (UTC+05:30) India Standard Time
Asia/Colombo (UTC+05:30) India Standard Time
Asia/Kathmandu (UTC+05:45) Nepal Time
Asia/Dhaka (UTC+06:00) Bangladesh Standard Time
Asia/Thimphu (UTC+06:00) Bhutan Time
Asia/Qostanay (UTC+06:00) East Kazakhstan Time
Asia/Almaty (UTC+06:00) East Kazakhstan Time
Asia/Urumqi (UTC+06:00) GMT+06:00
Indian/Chagos (UTC+06:00) Indian Ocean Time
Asia/Bishkek (UTC+06:00) Kyrgyzstan Time
Asia/Omsk (UTC+06:00) Omsk Standard Time
Antarctica/Vostok (UTC+06:00) Vostok Time
Indian/Cocos (UTC+06:30) Cocos Islands Time
Asia/Yangon (UTC+06:30) Myanmar Time
Indian/Christmas (UTC+07:00) Christmas Island Time
Antarctica/Davis (UTC+07:00) Davis Time
Asia/Barnaul (UTC+07:00) GMT+07:00
Asia/Tomsk (UTC+07:00) GMT+07:00
Asia/Hovd (UTC+07:00) Hovd Standard Time
Asia/Ho_Chi_Minh (UTC+07:00) Indochina Time
Asia/Bangkok (UTC+07:00) Indochina Time
Asia/Vientiane (UTC+07:00) Indochina Time
Asia/Phnom_Penh (UTC+07:00) Indochina Time
Asia/Novokuznetsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Krasnoyarsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Novosibirsk (UTC+07:00) Novosibirsk Standard Time
Asia/Jakarta (UTC+07:00) Western Indonesia Time
Asia/Pontianak (UTC+07:00) Western Indonesia Time
Australia/Perth (UTC+08:00) Australian Western Standard Time
Asia/Brunei (UTC+08:00) Brunei Darussalam Time
Asia/Makassar (UTC+08:00) Central Indonesia Time
Asia/Shanghai (UTC+08:00) China Standard Time
Asia/Macau (UTC+08:00) China Standard Time
Asia/Hong_Kong (UTC+08:00) Hong Kong Standard Time
Asia/Irkutsk (UTC+08:00) Irkutsk Standard Time
Asia/Kuching (UTC+08:00) Malaysia Time
Asia/Kuala_Lumpur (UTC+08:00) Malaysia Time
Asia/Manila (UTC+08:00) Philippine Standard Time
Asia/Singapore (UTC+08:00) Singapore Standard Time
Asia/Taipei (UTC+08:00) Taipei Standard Time
Asia/Choibalsan (UTC+08:00) Ulaanbaatar Standard Time
Asia/Ulaanbaatar (UTC+08:00) Ulaanbaatar Standard Time
Australia/Eucla (UTC+08:45) Australian Central Western Standard Time
Asia/Dili (UTC+09:00) East Timor Time
Asia/Jayapura (UTC+09:00) Eastern Indonesia Time
Asia/Tokyo (UTC+09:00) Japan Standard Time
Asia/Pyongyang (UTC+09:00) Korean Standard Time
Asia/Seoul (UTC+09:00) Korean Standard Time
Pacific/Palau (UTC+09:00) Palau Time
Asia/Chita (UTC+09:00) Yakutsk Standard Time
Asia/Khandyga (UTC+09:00) Yakutsk Standard Time
Asia/Yakutsk (UTC+09:00) Yakutsk Standard Time
Australia/Broken_Hill (UTC+09:30) Australian Central Standard Time
Australia/Adelaide (UTC+09:30) Australian Central Standard Time
Australia/Darwin (UTC+09:30) Australian Central Standard Time
Australia/Sydney (UTC+10:00) Australian Eastern Standard Time
Antarctica/Macquarie (UTC+10:00) Australian Eastern Standard Time
Australia/Hobart (UTC+10:00) Australian Eastern Standard Time
Australia/Melbourne (UTC+10:00) Australian Eastern Standard Time
Australia/Brisbane (UTC+10:00) Australian Eastern Standard Time
Australia/Lindeman (UTC+10:00) Australian Eastern Standard Time
Pacific/Guam (UTC+10:00) Chamorro Standard Time
Pacific/Saipan (UTC+10:00) Chamorro Standard Time
Pacific/Chuuk (UTC+10:00) Chuuk Time
Antarctica/DumontDUrville (UTC+10:00) Dumont-d’Urville Time
Pacific/Port_Moresby (UTC+10:00) Papua New Guinea Time
Asia/Ust-Nera (UTC+10:00) Vladivostok Standard Time
Asia/Vladivostok (UTC+10:00) Vladivostok Standard Time
Australia/Lord_Howe (UTC+10:30) Lord Howe Standard Time
Antarctica/Casey (UTC+11:00) Casey Time
Pacific/Bougainville (UTC+11:00) GMT+11:00
Asia/Srednekolymsk (UTC+11:00) GMT+11:00
Pacific/Kosrae (UTC+11:00) Kosrae Time
Asia/Magadan (UTC+11:00) Magadan Standard Time
Pacific/Noumea (UTC+11:00) New Caledonia Standard Time
Pacific/Norfolk (UTC+11:00) Norfolk Island Standard Time
Pacific/Pohnpei (UTC+11:00) Ponape Time
Asia/Sakhalin (UTC+11:00) Sakhalin Standard Time
Pacific/Guadalcanal (UTC+11:00) Solomon Islands Time
Pacific/Efate (UTC+11:00) Vanuatu Standard Time
Asia/Anadyr (UTC+12:00) Anadyr Standard Time
Pacific/Fiji (UTC+12:00) Fiji Standard Time
Pacific/Tarawa (UTC+12:00) Gilbert Islands Time
Pacific/Majuro (UTC+12:00) Marshall Islands Time
Pacific/Kwajalein (UTC+12:00) Marshall Islands Time
Pacific/Nauru (UTC+12:00) Nauru Time
Antarctica/McMurdo (UTC+12:00) New Zealand Standard Time
Pacific/Auckland (UTC+12:00) New Zealand Standard Time
Asia/Kamchatka (UTC+12:00) Petropavlovsk-Kamchatski Standard Time
Pacific/Funafuti (UTC+12:00) Tuvalu Time
Pacific/Wake (UTC+12:00) Wake Island Time
Pacific/Wallis (UTC+12:00) Wallis & Futuna Time
Pacific/Chatham (UTC+12:45) Chatham Standard Time
Pacific/Apia (UTC+13:00) Apia Standard Time
Pacific/Enderbury (UTC+13:00) Phoenix Islands Time
Pacific/Fakaofo (UTC+13:00) Tokelau Time
Pacific/Tongatapu (UTC+13:00) Tonga Standard Time
Pacific/Kiritimati (UTC+14:00) Line Islands Time

After

(click to expand)
Id Display Name
Pacific/Niue (UTC-11:00) Niue Time
Pacific/Midway (UTC-11:00) Samoa Standard Time (Midway)
Pacific/Pago_Pago (UTC-11:00) Samoa Standard Time (Pago Pago)
Pacific/Rarotonga (UTC-10:00) Cook Islands Standard Time (Rarotonga)
America/Adak (UTC-10:00) Hawaii-Aleutian Time (Adak)
Pacific/Honolulu (UTC-10:00) Hawaii-Aleutian Time (Honolulu)
Pacific/Tahiti (UTC-10:00) Tahiti Time
Pacific/Marquesas (UTC-09:30) Marquesas Time
America/Anchorage (UTC-09:00) Alaska Time (Anchorage)
America/Juneau (UTC-09:00) Alaska Time (Juneau)
America/Metlakatla (UTC-09:00) Alaska Time (Metlakatla)
America/Nome (UTC-09:00) Alaska Time (Nome)
America/Sitka (UTC-09:00) Alaska Time (Sitka)
America/Yakutat (UTC-09:00) Alaska Time (Yakutat)
Pacific/Gambier (UTC-09:00) Gambier Time
America/Los_Angeles (UTC-08:00) Pacific Time (Los Angeles)
America/Tijuana (UTC-08:00) Pacific Time (Tijuana)
America/Vancouver (UTC-08:00) Pacific Time (Vancouver)
Pacific/Pitcairn (UTC-08:00) Pitcairn Islands Time
America/Chihuahua (UTC-07:00) Mexican Pacific Time (Chihuahua)
America/Hermosillo (UTC-07:00) Mexican Pacific Time (Hermosillo)
America/Mazatlan (UTC-07:00) Mexican Pacific Time (Mazatlan)
America/Boise (UTC-07:00) Mountain Time (Boise)
America/Cambridge_Bay (UTC-07:00) Mountain Time (Cambridge Bay)
America/Creston (UTC-07:00) Mountain Time (Creston)
America/Dawson_Creek (UTC-07:00) Mountain Time (Dawson Creek)
America/Dawson (UTC-07:00) Mountain Time (Dawson)
America/Denver (UTC-07:00) Mountain Time (Denver)
America/Edmonton (UTC-07:00) Mountain Time (Edmonton)
America/Fort_Nelson (UTC-07:00) Mountain Time (Fort Nelson)
America/Inuvik (UTC-07:00) Mountain Time (Inuvik)
America/Ojinaga (UTC-07:00) Mountain Time (Ojinaga)
America/Phoenix (UTC-07:00) Mountain Time (Phoenix)
America/Whitehorse (UTC-07:00) Mountain Time (Whitehorse)
America/Yellowknife (UTC-07:00) Mountain Time (Yellowknife)
America/Bahia_Banderas (UTC-06:00) Central Time (Bahia Banderas)
America/Belize (UTC-06:00) Central Time (Belize)
America/North_Dakota/Beulah (UTC-06:00) Central Time (Beulah, North Dakota)
America/North_Dakota/Center (UTC-06:00) Central Time (Center, North Dakota)
America/Chicago (UTC-06:00) Central Time (Chicago)
America/Costa_Rica (UTC-06:00) Central Time (Costa Rica)
America/El_Salvador (UTC-06:00) Central Time (El Salvador)
America/Guatemala (UTC-06:00) Central Time (Guatemala)
America/Indiana/Knox (UTC-06:00) Central Time (Knox, Indiana)
America/Managua (UTC-06:00) Central Time (Managua)
America/Matamoros (UTC-06:00) Central Time (Matamoros)
America/Menominee (UTC-06:00) Central Time (Menominee)
America/Merida (UTC-06:00) Central Time (Merida)
America/Mexico_City (UTC-06:00) Central Time (Mexico City)
America/Monterrey (UTC-06:00) Central Time (Monterrey)
America/North_Dakota/New_Salem (UTC-06:00) Central Time (New Salem, North Dakota)
America/Rainy_River (UTC-06:00) Central Time (Rainy River)
America/Rankin_Inlet (UTC-06:00) Central Time (Rankin Inlet)
America/Regina (UTC-06:00) Central Time (Regina)
America/Resolute (UTC-06:00) Central Time (Resolute)
America/Swift_Current (UTC-06:00) Central Time (Swift Current)
America/Tegucigalpa (UTC-06:00) Central Time (Tegucigalpa)
America/Indiana/Tell_City (UTC-06:00) Central Time (Tell City, Indiana)
America/Winnipeg (UTC-06:00) Central Time (Winnipeg)
Pacific/Easter (UTC-06:00) Easter Island Time
Pacific/Galapagos (UTC-06:00) Galapagos Time
America/Eirunepe (UTC-05:00) Acre Standard Time (Eirunepe)
America/Rio_Branco (UTC-05:00) Acre Standard Time (Rio Branco)
America/Bogota (UTC-05:00) Colombia Standard Time (Bogota)
America/Havana (UTC-05:00) Cuba Time
America/Atikokan (UTC-05:00) Eastern Time (Atikokan)
America/Cancun (UTC-05:00) Eastern Time (Cancun)
America/Cayman (UTC-05:00) Eastern Time (Cayman)
America/Detroit (UTC-05:00) Eastern Time (Detroit)
America/Grand_Turk (UTC-05:00) Eastern Time (Grand Turk)
America/Indiana/Indianapolis (UTC-05:00) Eastern Time (Indianapolis)
America/Iqaluit (UTC-05:00) Eastern Time (Iqaluit)
America/Jamaica (UTC-05:00) Eastern Time (Jamaica)
America/Kentucky/Louisville (UTC-05:00) Eastern Time (Louisville)
America/Indiana/Marengo (UTC-05:00) Eastern Time (Marengo, Indiana)
America/Kentucky/Monticello (UTC-05:00) Eastern Time (Monticello, Kentucky)
America/Nassau (UTC-05:00) Eastern Time (Nassau)
America/New_York (UTC-05:00) Eastern Time (New York)
America/Nipigon (UTC-05:00) Eastern Time (Nipigon)
America/Panama (UTC-05:00) Eastern Time (Panama)
America/Pangnirtung (UTC-05:00) Eastern Time (Pangnirtung)
America/Indiana/Petersburg (UTC-05:00) Eastern Time (Petersburg, Indiana)
America/Port-au-Prince (UTC-05:00) Eastern Time (Port-au-Prince)
America/Thunder_Bay (UTC-05:00) Eastern Time (Thunder Bay)
America/Toronto (UTC-05:00) Eastern Time (Toronto)
America/Indiana/Vevay (UTC-05:00) Eastern Time (Vevay, Indiana)
America/Indiana/Vincennes (UTC-05:00) Eastern Time (Vincennes, Indiana)
America/Indiana/Winamac (UTC-05:00) Eastern Time (Winamac, Indiana)
America/Guayaquil (UTC-05:00) Ecuador Time
America/Lima (UTC-05:00) Peru Standard Time (Lima)
America/Boa_Vista (UTC-04:00) Amazon Standard Time (Boa Vista)
America/Campo_Grande (UTC-04:00) Amazon Standard Time (Campo Grande)
America/Cuiaba (UTC-04:00) Amazon Standard Time (Cuiaba)
America/Manaus (UTC-04:00) Amazon Standard Time (Manaus)
America/Porto_Velho (UTC-04:00) Amazon Standard Time (Porto Velho)
America/Anguilla (UTC-04:00) Atlantic Time (Anguilla)
America/Antigua (UTC-04:00) Atlantic Time (Antigua)
America/Aruba (UTC-04:00) Atlantic Time (Aruba)
America/Barbados (UTC-04:00) Atlantic Time (Barbados)
Atlantic/Bermuda (UTC-04:00) Atlantic Time (Bermuda)
America/Blanc-Sablon (UTC-04:00) Atlantic Time (Blanc-Sablon)
America/Curacao (UTC-04:00) Atlantic Time (Curaçao)
America/Dominica (UTC-04:00) Atlantic Time (Dominica)
America/Glace_Bay (UTC-04:00) Atlantic Time (Glace Bay)
America/Goose_Bay (UTC-04:00) Atlantic Time (Goose Bay)
America/Grenada (UTC-04:00) Atlantic Time (Grenada)
America/Guadeloupe (UTC-04:00) Atlantic Time (Guadeloupe)
America/Halifax (UTC-04:00) Atlantic Time (Halifax)
America/Kralendijk (UTC-04:00) Atlantic Time (Kralendijk)
America/Lower_Princes (UTC-04:00) Atlantic Time (Lower Prince’s Quarter)
America/Marigot (UTC-04:00) Atlantic Time (Marigot)
America/Martinique (UTC-04:00) Atlantic Time (Martinique)
America/Moncton (UTC-04:00) Atlantic Time (Moncton)
America/Montserrat (UTC-04:00) Atlantic Time (Montserrat)
America/Port_of_Spain (UTC-04:00) Atlantic Time (Port of Spain)
America/Puerto_Rico (UTC-04:00) Atlantic Time (Puerto Rico)
America/Santo_Domingo (UTC-04:00) Atlantic Time (Santo Domingo)
America/St_Barthelemy (UTC-04:00) Atlantic Time (St. Barthélemy)
America/St_Kitts (UTC-04:00) Atlantic Time (St. Kitts)
America/St_Lucia (UTC-04:00) Atlantic Time (St. Lucia)
America/St_Thomas (UTC-04:00) Atlantic Time (St. Thomas)
America/St_Vincent (UTC-04:00) Atlantic Time (St. Vincent)
America/Thule (UTC-04:00) Atlantic Time (Thule)
America/Tortola (UTC-04:00) Atlantic Time (Tortola)
America/La_Paz (UTC-04:00) Bolivia Time
America/Santiago (UTC-04:00) Chile Time
America/Guyana (UTC-04:00) Guyana Time
America/Asuncion (UTC-04:00) Paraguay Time
America/Caracas (UTC-04:00) Venezuela Time
America/St_Johns (UTC-03:30) Newfoundland Time (St. John’s)
America/Argentina/Buenos_Aires (UTC-03:00) Argentina Standard Time (Buenos Aires)
America/Argentina/Catamarca (UTC-03:00) Argentina Standard Time (Catamarca)
America/Argentina/Cordoba (UTC-03:00) Argentina Standard Time (Cordoba)
America/Argentina/Jujuy (UTC-03:00) Argentina Standard Time (Jujuy)
America/Argentina/La_Rioja (UTC-03:00) Argentina Standard Time (La Rioja)
America/Argentina/Mendoza (UTC-03:00) Argentina Standard Time (Mendoza)
America/Argentina/Rio_Gallegos (UTC-03:00) Argentina Standard Time (Rio Gallegos)
America/Argentina/Salta (UTC-03:00) Argentina Standard Time (Salta)
America/Argentina/San_Juan (UTC-03:00) Argentina Standard Time (San Juan)
America/Argentina/San_Luis (UTC-03:00) Argentina Standard Time (San Luis)
America/Argentina/Tucuman (UTC-03:00) Argentina Standard Time (Tucuman)
America/Argentina/Ushuaia (UTC-03:00) Argentina Standard Time (Ushuaia)
America/Araguaina (UTC-03:00) Brasilia Standard Time (Araguaina)
America/Bahia (UTC-03:00) Brasilia Standard Time (Bahia)
America/Belem (UTC-03:00) Brasilia Standard Time (Belem)
America/Fortaleza (UTC-03:00) Brasilia Standard Time (Fortaleza)
America/Maceio (UTC-03:00) Brasilia Standard Time (Maceio)
America/Recife (UTC-03:00) Brasilia Standard Time (Recife)
America/Santarem (UTC-03:00) Brasilia Standard Time (Santarem)
America/Sao_Paulo (UTC-03:00) Brasilia Standard Time (Sao Paulo)
Atlantic/Stanley (UTC-03:00) Falkland Islands Standard Time (Stanley)
America/Cayenne (UTC-03:00) French Guiana Time
Antarctica/Palmer (UTC-03:00) Palmer Time
America/Punta_Arenas (UTC-03:00) Punta Arenas Time
Antarctica/Rothera (UTC-03:00) Rothera Time
America/Miquelon (UTC-03:00) St. Pierre & Miquelon Time
America/Paramaribo (UTC-03:00) Suriname Time
America/Montevideo (UTC-03:00) Uruguay Standard Time (Montevideo)
America/Nuuk (UTC-03:00) West Greenland Time (Nuuk)
America/Noronha (UTC-02:00) Fernando de Noronha Standard Time
Atlantic/South_Georgia (UTC-02:00) South Georgia Time
Atlantic/Azores (UTC-01:00) Azores Time
Atlantic/Cape_Verde (UTC-01:00) Cape Verde Standard Time
America/Scoresbysund (UTC-01:00) East Greenland Time (Ittoqqortoormiit)
UTC (UTC) Coordinated Universal Time
Africa/Ouagadougou (UTC+00:00) Burkina Faso Time
Africa/Abidjan (UTC+00:00) Côte d’Ivoire Time
America/Danmarkshavn (UTC+00:00) Danmarkshavn Time
Africa/Banjul (UTC+00:00) Gambia Time
Africa/Accra (UTC+00:00) Ghana Time
Europe/Guernsey (UTC+00:00) Guernsey Time
Africa/Conakry (UTC+00:00) Guinea Time
Africa/Bissau (UTC+00:00) Guinea-Bissau Time
Atlantic/Reykjavik (UTC+00:00) Iceland Time
Europe/Isle_of_Man (UTC+00:00) Isle of Man Time
Europe/Jersey (UTC+00:00) Jersey Time
Africa/Monrovia (UTC+00:00) Liberia Time
Africa/Bamako (UTC+00:00) Mali Time
Africa/Nouakchott (UTC+00:00) Mauritania Time
Africa/Dakar (UTC+00:00) Senegal Time
Africa/Freetown (UTC+00:00) Sierra Leone Time
Atlantic/St_Helena (UTC+00:00) St. Helena Time
Africa/Sao_Tome (UTC+00:00) São Tomé & Príncipe Time
Africa/Lome (UTC+00:00) Togo Time
Antarctica/Troll (UTC+00:00) Troll Time
Europe/London (UTC+00:00) United Kingdom Time
Atlantic/Canary (UTC+00:00) Western European Time (Canary)
Atlantic/Faroe (UTC+00:00) Western European Time (Faroe)
Europe/Lisbon (UTC+00:00) Western European Time (Lisbon)
Atlantic/Madeira (UTC+00:00) Western European Time (Madeira)
Africa/Algiers (UTC+01:00) Central European Time (Algiers)
Europe/Amsterdam (UTC+01:00) Central European Time (Amsterdam)
Europe/Andorra (UTC+01:00) Central European Time (Andorra)
Europe/Belgrade (UTC+01:00) Central European Time (Belgrade)
Europe/Berlin (UTC+01:00) Central European Time (Berlin)
Europe/Bratislava (UTC+01:00) Central European Time (Bratislava)
Europe/Brussels (UTC+01:00) Central European Time (Brussels)
Europe/Budapest (UTC+01:00) Central European Time (Budapest)
Europe/Busingen (UTC+01:00) Central European Time (Busingen)
Africa/Ceuta (UTC+01:00) Central European Time (Ceuta)
Europe/Copenhagen (UTC+01:00) Central European Time (Copenhagen)
Europe/Gibraltar (UTC+01:00) Central European Time (Gibraltar)
Europe/Ljubljana (UTC+01:00) Central European Time (Ljubljana)
Arctic/Longyearbyen (UTC+01:00) Central European Time (Longyearbyen)
Europe/Luxembourg (UTC+01:00) Central European Time (Luxembourg)
Europe/Madrid (UTC+01:00) Central European Time (Madrid)
Europe/Malta (UTC+01:00) Central European Time (Malta)
Europe/Monaco (UTC+01:00) Central European Time (Monaco)
Europe/Oslo (UTC+01:00) Central European Time (Oslo)
Europe/Paris (UTC+01:00) Central European Time (Paris)
Europe/Podgorica (UTC+01:00) Central European Time (Podgorica)
Europe/Prague (UTC+01:00) Central European Time (Prague)
Europe/Rome (UTC+01:00) Central European Time (Rome)
Europe/San_Marino (UTC+01:00) Central European Time (San Marino)
Europe/Sarajevo (UTC+01:00) Central European Time (Sarajevo)
Europe/Skopje (UTC+01:00) Central European Time (Skopje)
Europe/Stockholm (UTC+01:00) Central European Time (Stockholm)
Europe/Tirane (UTC+01:00) Central European Time (Tirane)
Africa/Tunis (UTC+01:00) Central European Time (Tunis)
Europe/Vaduz (UTC+01:00) Central European Time (Vaduz)
Europe/Vatican (UTC+01:00) Central European Time (Vatican)
Europe/Vienna (UTC+01:00) Central European Time (Vienna)
Europe/Warsaw (UTC+01:00) Central European Time (Warsaw)
Europe/Zagreb (UTC+01:00) Central European Time (Zagreb)
Europe/Zurich (UTC+01:00) Central European Time (Zurich)
Europe/Dublin (UTC+01:00) Ireland Time
Africa/Casablanca (UTC+01:00) Morocco Time
Africa/Bangui (UTC+01:00) West Africa Standard Time (Bangui)
Africa/Brazzaville (UTC+01:00) West Africa Standard Time (Brazzaville)
Africa/Douala (UTC+01:00) West Africa Standard Time (Douala)
Africa/Kinshasa (UTC+01:00) West Africa Standard Time (Kinshasa)
Africa/Lagos (UTC+01:00) West Africa Standard Time (Lagos)
Africa/Libreville (UTC+01:00) West Africa Standard Time (Libreville)
Africa/Luanda (UTC+01:00) West Africa Standard Time (Luanda)
Africa/Malabo (UTC+01:00) West Africa Standard Time (Malabo)
Africa/Ndjamena (UTC+01:00) West Africa Standard Time (Ndjamena)
Africa/Niamey (UTC+01:00) West Africa Standard Time (Niamey)
Africa/Porto-Novo (UTC+01:00) West Africa Standard Time (Porto-Novo)
Africa/El_Aaiun (UTC+01:00) Western Sahara Time
Africa/Blantyre (UTC+02:00) Central Africa Time (Blantyre)
Africa/Bujumbura (UTC+02:00) Central Africa Time (Bujumbura)
Africa/Gaborone (UTC+02:00) Central Africa Time (Gaborone)
Africa/Harare (UTC+02:00) Central Africa Time (Harare)
Africa/Juba (UTC+02:00) Central Africa Time (Juba)
Africa/Khartoum (UTC+02:00) Central Africa Time (Khartoum)
Africa/Kigali (UTC+02:00) Central Africa Time (Kigali)
Africa/Lubumbashi (UTC+02:00) Central Africa Time (Lubumbashi)
Africa/Lusaka (UTC+02:00) Central Africa Time (Lusaka)
Africa/Maputo (UTC+02:00) Central Africa Time (Maputo)
Africa/Windhoek (UTC+02:00) Central Africa Time (Windhoek)
Asia/Amman (UTC+02:00) Eastern European Time (Amman)
Europe/Athens (UTC+02:00) Eastern European Time (Athens)
Asia/Beirut (UTC+02:00) Eastern European Time (Beirut)
Europe/Bucharest (UTC+02:00) Eastern European Time (Bucharest)
Africa/Cairo (UTC+02:00) Eastern European Time (Cairo)
Europe/Chisinau (UTC+02:00) Eastern European Time (Chisinau)
Asia/Damascus (UTC+02:00) Eastern European Time (Damascus)
Asia/Gaza (UTC+02:00) Eastern European Time (Gaza)
Asia/Hebron (UTC+02:00) Eastern European Time (Hebron)
Europe/Helsinki (UTC+02:00) Eastern European Time (Helsinki)
Europe/Kaliningrad (UTC+02:00) Eastern European Time (Kaliningrad)
Europe/Kiev (UTC+02:00) Eastern European Time (Kiev)
Europe/Mariehamn (UTC+02:00) Eastern European Time (Mariehamn)
Asia/Nicosia (UTC+02:00) Eastern European Time (Nicosia)
Europe/Riga (UTC+02:00) Eastern European Time (Riga)
Europe/Sofia (UTC+02:00) Eastern European Time (Sofia)
Europe/Tallinn (UTC+02:00) Eastern European Time (Tallinn)
Africa/Tripoli (UTC+02:00) Eastern European Time (Tripoli)
Europe/Uzhgorod (UTC+02:00) Eastern European Time (Uzhhorod)
Europe/Vilnius (UTC+02:00) Eastern European Time (Vilnius)
Europe/Zaporozhye (UTC+02:00) Eastern European Time (Zaporozhye)
Asia/Famagusta (UTC+02:00) Famagusta Time
Asia/Jerusalem (UTC+02:00) Israel Time
Africa/Johannesburg (UTC+02:00) South Africa Standard Time (Johannesburg)
Africa/Maseru (UTC+02:00) South Africa Standard Time (Maseru)
Africa/Mbabane (UTC+02:00) South Africa Standard Time (Mbabane)
Asia/Aden (UTC+03:00) Arabian Standard Time (Aden)
Asia/Baghdad (UTC+03:00) Arabian Standard Time (Baghdad)
Asia/Bahrain (UTC+03:00) Arabian Standard Time (Bahrain)
Asia/Kuwait (UTC+03:00) Arabian Standard Time (Kuwait)
Asia/Qatar (UTC+03:00) Arabian Standard Time (Qatar)
Asia/Riyadh (UTC+03:00) Arabian Standard Time (Riyadh)
Europe/Minsk (UTC+03:00) Belarus Time
Africa/Addis_Ababa (UTC+03:00) East Africa Time (Addis Ababa)
Indian/Antananarivo (UTC+03:00) East Africa Time (Antananarivo)
Africa/Asmara (UTC+03:00) East Africa Time (Asmara)
Indian/Comoro (UTC+03:00) East Africa Time (Comoro)
Africa/Dar_es_Salaam (UTC+03:00) East Africa Time (Dar es Salaam)
Africa/Djibouti (UTC+03:00) East Africa Time (Djibouti)
Africa/Kampala (UTC+03:00) East Africa Time (Kampala)
Indian/Mayotte (UTC+03:00) East Africa Time (Mayotte)
Africa/Mogadishu (UTC+03:00) East Africa Time (Mogadishu)
Africa/Nairobi (UTC+03:00) East Africa Time (Nairobi)
Europe/Kirov (UTC+03:00) Kirov Time
Europe/Moscow (UTC+03:00) Moscow Time
Europe/Simferopol (UTC+03:00) Simferopol Time
Antarctica/Syowa (UTC+03:00) Syowa Time
Europe/Istanbul (UTC+03:00) Turkey Time
Europe/Volgograd (UTC+03:00) Volgograd Standard Time
Asia/Tehran (UTC+03:30) Iran Time
Asia/Yerevan (UTC+04:00) Armenia Standard Time (Yerevan)
Europe/Astrakhan (UTC+04:00) Astrakhan Time
Asia/Baku (UTC+04:00) Azerbaijan Standard Time (Baku)
Asia/Tbilisi (UTC+04:00) Georgia Standard Time (Tbilisi)
Asia/Dubai (UTC+04:00) Gulf Standard Time (Dubai)
Asia/Muscat (UTC+04:00) Gulf Standard Time (Muscat)
Indian/Mauritius (UTC+04:00) Mauritius Standard Time
Indian/Reunion (UTC+04:00) Réunion Time
Europe/Samara (UTC+04:00) Samara Standard Time
Europe/Saratov (UTC+04:00) Saratov Time
Indian/Mahe (UTC+04:00) Seychelles Time
Europe/Ulyanovsk (UTC+04:00) Ulyanovsk Time
Asia/Kabul (UTC+04:30) Afghanistan Time
Indian/Kerguelen (UTC+05:00) French Southern & Antarctic Time (Kerguelen)
Indian/Maldives (UTC+05:00) Maldives Time
Antarctica/Mawson (UTC+05:00) Mawson Time
Asia/Karachi (UTC+05:00) Pakistan Standard Time (Karachi)
Asia/Dushanbe (UTC+05:00) Tajikistan Time
Asia/Ashgabat (UTC+05:00) Turkmenistan Standard Time (Ashgabat)
Asia/Samarkand (UTC+05:00) Uzbekistan Standard Time (Samarkand)
Asia/Tashkent (UTC+05:00) Uzbekistan Standard Time (Tashkent)
Asia/Aqtau (UTC+05:00) West Kazakhstan Time (Aqtau)
Asia/Aqtobe (UTC+05:00) West Kazakhstan Time (Aqtobe)
Asia/Atyrau (UTC+05:00) West Kazakhstan Time (Atyrau)
Asia/Oral (UTC+05:00) West Kazakhstan Time (Oral)
Asia/Qyzylorda (UTC+05:00) West Kazakhstan Time (Qyzylorda)
Asia/Yekaterinburg (UTC+05:00) Yekaterinburg Standard Time
Asia/Colombo (UTC+05:30) India Standard Time (Colombo)
Asia/Kolkata (UTC+05:30) India Standard Time (Kolkata)
Asia/Kathmandu (UTC+05:45) Nepal Time
Asia/Dhaka (UTC+06:00) Bangladesh Standard Time (Dhaka)
Asia/Thimphu (UTC+06:00) Bhutan Time
Asia/Almaty (UTC+06:00) East Kazakhstan Time (Almaty)
Asia/Qostanay (UTC+06:00) East Kazakhstan Time (Kostanay)
Indian/Chagos (UTC+06:00) Indian Ocean Time (Chagos)
Asia/Bishkek (UTC+06:00) Kyrgyzstan Time
Asia/Omsk (UTC+06:00) Omsk Standard Time
Asia/Urumqi (UTC+06:00) Urumqi Time
Antarctica/Vostok (UTC+06:00) Vostok Time
Indian/Cocos (UTC+06:30) Cocos Islands Time
Asia/Yangon (UTC+06:30) Myanmar Time (Yangon)
Asia/Barnaul (UTC+07:00) Barnaul Time
Indian/Christmas (UTC+07:00) Christmas Island Time
Antarctica/Davis (UTC+07:00) Davis Time
Asia/Hovd (UTC+07:00) Hovd Standard Time
Asia/Bangkok (UTC+07:00) Indochina Time (Bangkok)
Asia/Ho_Chi_Minh (UTC+07:00) Indochina Time (Ho Chi Minh City)
Asia/Phnom_Penh (UTC+07:00) Indochina Time (Phnom Penh)
Asia/Vientiane (UTC+07:00) Indochina Time (Vientiane)
Asia/Krasnoyarsk (UTC+07:00) Krasnoyarsk Standard Time
Asia/Novokuznetsk (UTC+07:00) Krasnoyarsk Standard Time (Novokuznetsk)
Asia/Novosibirsk (UTC+07:00) Novosibirsk Standard Time
Asia/Tomsk (UTC+07:00) Tomsk Time
Asia/Jakarta (UTC+07:00) Western Indonesia Time (Jakarta)
Asia/Pontianak (UTC+07:00) Western Indonesia Time (Pontianak)
Australia/Perth (UTC+08:00) Australian Western Standard Time (Perth)
Asia/Brunei (UTC+08:00) Brunei Darussalam Time
Asia/Makassar (UTC+08:00) Central Indonesia Time (Makassar)
Asia/Macau (UTC+08:00) China Standard Time (Macao)
Asia/Shanghai (UTC+08:00) China Standard Time (Shanghai)
Asia/Hong_Kong (UTC+08:00) Hong Kong Standard Time
Asia/Irkutsk (UTC+08:00) Irkutsk Standard Time
Asia/Kuala_Lumpur (UTC+08:00) Malaysia Time
Asia/Kuching (UTC+08:00) Malaysia Time (Kuching)
Asia/Manila (UTC+08:00) Philippine Standard Time (Manila)
Asia/Singapore (UTC+08:00) Singapore Standard Time
Asia/Taipei (UTC+08:00) Taipei Standard Time
Asia/Ulaanbaatar (UTC+08:00) Ulaanbaatar Standard Time
Asia/Choibalsan (UTC+08:00) Ulaanbaatar Standard Time (Choibalsan)
Australia/Eucla (UTC+08:45) Australian Central Western Standard Time (Eucla)
Asia/Dili (UTC+09:00) East Timor Time (Dili)
Asia/Jayapura (UTC+09:00) Eastern Indonesia Time (Jayapura)
Asia/Tokyo (UTC+09:00) Japan Standard Time (Tokyo)
Asia/Pyongyang (UTC+09:00) Korean Standard Time (Pyongyang)
Asia/Seoul (UTC+09:00) Korean Standard Time (Seoul)
Pacific/Palau (UTC+09:00) Palau Time
Asia/Yakutsk (UTC+09:00) Yakutsk Standard Time
Asia/Chita (UTC+09:00) Yakutsk Standard Time (Chita)
Asia/Khandyga (UTC+09:00) Yakutsk Standard Time (Khandyga)
Australia/Adelaide (UTC+09:30) Central Australia Time (Adelaide)
Australia/Broken_Hill (UTC+09:30) Central Australia Time (Broken Hill)
Australia/Darwin (UTC+09:30) Central Australia Time (Darwin)
Pacific/Guam (UTC+10:00) Chamorro Standard Time (Guam)
Pacific/Saipan (UTC+10:00) Chamorro Standard Time (Saipan)
Pacific/Chuuk (UTC+10:00) Chuuk Time
Antarctica/DumontDUrville (UTC+10:00) Dumont-d’Urville Time (Dumont d’Urville)
Australia/Brisbane (UTC+10:00) Eastern Australia Time (Brisbane)
Australia/Hobart (UTC+10:00) Eastern Australia Time (Hobart)
Australia/Lindeman (UTC+10:00) Eastern Australia Time (Lindeman)
Antarctica/Macquarie (UTC+10:00) Eastern Australia Time (Macquarie)
Australia/Melbourne (UTC+10:00) Eastern Australia Time (Melbourne)
Australia/Sydney (UTC+10:00) Eastern Australia Time (Sydney)
Pacific/Port_Moresby (UTC+10:00) Papua New Guinea Time (Port Moresby)
Asia/Vladivostok (UTC+10:00) Vladivostok Standard Time
Asia/Ust-Nera (UTC+10:00) Vladivostok Standard Time (Ust-Nera)
Australia/Lord_Howe (UTC+10:30) Lord Howe Time
Pacific/Bougainville (UTC+11:00) Bougainville Time
Antarctica/Casey (UTC+11:00) Casey Time
Pacific/Kosrae (UTC+11:00) Kosrae Time
Asia/Magadan (UTC+11:00) Magadan Standard Time
Pacific/Noumea (UTC+11:00) New Caledonia Standard Time (Noumea)
Pacific/Norfolk (UTC+11:00) Norfolk Island Time
Pacific/Pohnpei (UTC+11:00) Ponape Time (Pohnpei)
Asia/Sakhalin (UTC+11:00) Sakhalin Standard Time
Pacific/Guadalcanal (UTC+11:00) Solomon Islands Time
Asia/Srednekolymsk (UTC+11:00) Srednekolymsk Time
Pacific/Efate (UTC+11:00) Vanuatu Standard Time (Efate)
Asia/Anadyr (UTC+12:00) Anadyr Standard Time
Pacific/Fiji (UTC+12:00) Fiji Time
Pacific/Tarawa (UTC+12:00) Gilbert Islands Time (Tarawa)
Pacific/Majuro (UTC+12:00) Marshall Islands Time
Pacific/Kwajalein (UTC+12:00) Marshall Islands Time (Kwajalein)
Pacific/Nauru (UTC+12:00) Nauru Time
Pacific/Auckland (UTC+12:00) New Zealand Time
Antarctica/McMurdo (UTC+12:00) New Zealand Time (McMurdo)
Asia/Kamchatka (UTC+12:00) Petropavlovsk-Kamchatski Standard Time (Kamchatka)
Pacific/Funafuti (UTC+12:00) Tuvalu Time
Pacific/Wake (UTC+12:00) Wake Island Time
Pacific/Wallis (UTC+12:00) Wallis & Futuna Time
Pacific/Chatham (UTC+12:45) Chatham Time
Pacific/Enderbury (UTC+13:00) Phoenix Islands Time (Enderbury)
Pacific/Apia (UTC+13:00) Samoa Time
Pacific/Fakaofo (UTC+13:00) Tokelau Time
Pacific/Tongatapu (UTC+13:00) Tonga Standard Time (Tongatapu)
Pacific/Kiritimati (UTC+14:00) Line Islands Time (Kiritimati)

The above lists were generated with this simple program:

using System;
using System.Linq;

namespace ListTimeZones
{
    class Program
    {
        static void Main(string[] args)
        {
            var timeZones = TimeZoneInfo.GetSystemTimeZones();

            int col1Size = timeZones.Max(x => x.Id.Length);
            int col2Size = timeZones.Max(x => x.DisplayName.Length);
            Console.WriteLine("| " + "Id".PadRight(col1Size) + " | " + "Display Name".PadRight(col2Size) + " |");
            Console.WriteLine("| " + new string('-', col1Size) + " | " + new string('-', col2Size) + " |");
            foreach (TimeZoneInfo tzi in timeZones)
            {
                Console.WriteLine($"| {tzi.Id.PadRight(col1Size)} | {tzi.DisplayName.PadRight(col2Size)} |");
            }

            Console.WriteLine();
        }
    }
}
Author: mattjohnsonpint
Assignees: -
Labels:

area-System.Globalization

Milestone: -

@mattjohnsonpint
Copy link
Contributor Author

@tarekgh @eerhardt

@lewing
Copy link
Member

lewing commented Mar 2, 2021

cc @tqiu8

@danmoseley
Copy link
Member

Just curious as I am not knowledgeable about timezones -- what would be the impact of the user picking the wrong one of the several Alaska time zones? They are all -9:00. I'm not sure which -8:00 I should pick for Seattle, even when they are marked Los Angeles and Vancouver.

@mattjohnsonpint
Copy link
Contributor Author

Looks like I have some platform-specific build failures to resolve also.

@mattjohnsonpint
Copy link
Contributor Author

mattjohnsonpint commented Mar 2, 2021

Just curious as I am not knowledgeable about timezones -- what would be the impact of the user picking the wrong one of the several Alaska time zones? They are all -9:00. I'm not sure which -8:00 I should pick for Seattle, even when they are marked Los Angeles and Vancouver.

@danmoseley - Indeed, that's a general issue with time zones - there are quite a lot of them. The reason has to do with historical accuracy. IANA time zones aim to be accurate from 1970 forward, thus any variation in local time between nearby locations since 1970 get a distinct time zone.

For Alaska, the only two that matter today are America/Anchorage (UTC-9 with US DST rules) and America/Adak (UTC-10 with US DST rules). But if we look at the source data we can see that several other Alaskan time zones have been different in the past (last in 1983 in most cases, except Metlakatla last in 2019). Since any time zone can be used for the full range of dates available, we show the entire list and it gets large.

For Pacific time, there are three. Vancouver for Canada, Los Angeles for the USA, and Tijuana for Mexico. They too have had some historical differences.

Thus, the impact if a user choses the wrong time zone is that they get the changes in UTC offsets and daylight start/stop transition dates for the entire range of that time zone. If they are only working with "now" or nearby dates, that might not be noticed at all. If they are working with older dates, they could be off by an hour or more depending on the date in question. The same thing plays out with regard to any anticipated upcoming changes for future dates, if those changes are accounted for in their respective time zones.

Since the only API we have presently is TimeZoneInfo.GetSystemTimeZones(), we have to return them all. It might be interesting to consider adding an overload or two that would allow one to supply cut-off dates (or a country code) that could be used to shorten the list. But that would be something new.

Incidentally, legacy Windows registry-based time zones are fewer in number only because originally Windows hadn't set any particular consistency date (like IANA's 1970). That changed in 2016 when we formalized some of Microsoft's time zone policies and set a consistency date of 2010. If they had aimed for 1970 and covering the world, there would be just as many as IANA.

@tarekgh
Copy link
Member

tarekgh commented Mar 2, 2021

@lewing could you please advise if referencing the extra ICU methods is fine with wasm and other mobile platforms?

@eerhardt
Copy link
Member

eerhardt commented Mar 2, 2021

Are there any tests we can write for this new functionality?

@mattjohnsonpint
Copy link
Contributor Author

Are there any tests we can write for this new functionality?

Yes. I will add some. Thanks for calling that out. 👍

@mattjohnsonpint mattjohnsonpint force-pushed the mattjoh/timezoneinfo-displayname-unix branch from 719c8d1 to 4200b75 Compare March 2, 2021 17:21
@lewing
Copy link
Member

lewing commented Mar 2, 2021

@lewing could you please advise if referencing the extra ICU methods is fine with wasm and other mobile platforms?

It looks like this overlaps with #45385 for browser which is trying to get something to display when the display name doesn't exist in icu. From a quick scan my main concern is that we'd end up pulling in more unmanaged symbols (and size) to query for data that is unlikely to be in the icu data. @tqiu8 can you take a look?

@mattjohnsonpint
Copy link
Contributor Author

It looks like this overlaps with #45385 for browser which is trying to get something to display when the display name doesn't exist in icu.

I thought that was already handled, but I guess not. The changes in #45385 look good to me. IMHO, it should go first and then I can rebase this on top of that and adjust.

@mattjohnsonpint mattjohnsonpint force-pushed the mattjoh/timezoneinfo-displayname-unix branch 2 times, most recently from a1701e4 to 2fdfaea Compare March 2, 2021 20:06
@tarekgh
Copy link
Member

tarekgh commented Mar 23, 2021

    [ConditionalFact(nameof(IsEnglishUILanguageAndRemoteExecutorSupported))]

I am not getting why we have this condition? we are executing the method with remote executer any way and we force Invariant to the UI culture. This doesn't look right to condition it. I know this not your change but I think we can remove this condition and keep only the remote execution condition.


Refers to: src/libraries/System.Runtime/tests/System/TimeZoneInfoTests.cs:2542 in 50d0fd2. [](commit_id = 50d0fd2, deletion_comment = False)

@mattjohnsonpint
Copy link
Contributor Author

I am not getting why we have this condition?

I think this is specifically about proper handling of CultureInfo.InvariantCulture, which while the strings are English, the .Name of the culture is an empty string.

The English condition is again about being locked to the OS language on Windows.

@tarekgh tarekgh merged commit a0fc08e into dotnet:main Mar 24, 2021
@tarekgh
Copy link
Member

tarekgh commented Mar 24, 2021

Thanks @mattjohnsonpint for all work provided here.

@danmoseley
Copy link
Member

+1 thank you @mattjohnsonpint for this significant effort.

@SamMonoRT
Copy link
Member

Seems like this possibly caused a size regression in dotnet.wasm

@mattjohnsonpint mattjohnsonpint deleted the mattjoh/timezoneinfo-displayname-unix branch March 25, 2021 01:53
spouliot added a commit to xamarin/xamarin-macios that referenced this pull request Apr 20, 2021
* Update dependencies from https://github.com/dotnet/installer build 20210408.1

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21208.1

* Update dependencies from https://github.com/dotnet/installer build 20210409.4

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21209.4

* Update dependencies from https://github.com/dotnet/installer build 20210410.1

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21210.1

* same P4 specific fix as ccb43cb
but the ICU support was added based on P3 but merged after ^

* Update dependencies from https://github.com/dotnet/installer build 20210412.5

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21212.5

* Update dependencies from https://github.com/dotnet/installer build 20210413.70

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21213.70

* Update dependencies from https://github.com/dotnet/installer build 20210414.14

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21214.14

* Update to new package names

Thanks @pjcollins for the heads up #11175 (comment)

* Update dependencies from https://github.com/dotnet/installer build 20210415.1

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21215.1

* Fix build (path changed to include '.mono')

* remove more '.mono' special case that are not needed anymore

* Update dependencies from https://github.com/dotnet/installer build 20210415.12

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21215.12

* Fix building apps (it now finds the native libs)

Credits to @filipnavara

filipnavara@8325f8d

* Add back IsTrimmable (or nothing gets linked)

* Update dependencies from https://github.com/dotnet/installer build 20210418.6

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21218.6

* Keep downloading the CoreCLR runtime packs.

* [runtime] Adjust the build to link with the correct runtime library for CoreCLR.

* [tests][monotouch-test] Ignore NSTimeZoneTest / All_28300 on dotnet as it hangs

Introduced with dotnet/runtime#48931

Issue https://unicode-org.atlassian.net/browse/ICU-21591
PR unicode-org/icu#1699

* [dotnet][msbuild] Add more (missing) '\'

Fix satellite/location assemblies and some unit tests

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Alex Soto <alex@alexsoto.me>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
Co-authored-by: Sebastien Pouliot <sebastien.pouliot@microsoft.com>
Co-authored-by: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
@ghost ghost locked as resolved and limited conversation to collaborators Apr 24, 2021
@karelz karelz added this to the 6.0.0 milestone May 20, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants