Module exchangelib.winzone
A dict to translate from IANA location name to Windows timezone name. Translations taken from http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml
Expand source code
"""A dict to translate from IANA location name to Windows timezone name. Translations taken from
http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml
"""
import re
import requests
from .util import to_xml
CLDR_WINZONE_URL = 'https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml'
DEFAULT_TERRITORY = '001'
CLDR_WINZONE_TYPE_VERSION = '2021a'
CLDR_WINZONE_OTHER_VERSION = '7e11800'
def generate_map(timeout=10):
"""Create a new CLDR_TO_MS_TIMEZONE_MAP map from the CLDR data. Used when the CLDR database is updated.
:param timeout: (Default value = 10)
:return:
"""
r = requests.get(CLDR_WINZONE_URL, timeout=timeout)
if r.status_code != 200:
raise ValueError('Unexpected response: %s' % r)
tz_map = {}
timezones_elem = to_xml(r.content).find('windowsZones').find('mapTimezones')
type_version = timezones_elem.get('typeVersion')
other_version = timezones_elem.get('otherVersion')
for e in timezones_elem.findall('mapZone'):
for location in re.split(r'\s+', e.get('type')):
if e.get('territory') == DEFAULT_TERRITORY or location not in tz_map:
# Prefer default territory. This is so MS_TIMEZONE_TO_IANA_MAP maps from MS timezone ID back to the
# "preferred" region/location timezone name.
if not location:
raise ValueError('Expected location')
tz_map[location] = e.get('other'), e.get('territory')
return type_version, other_version, tz_map
# This map is generated irregularly from generate_map(). Do not edit manually - make corrections to
# IANA_TO_MS_TIMEZONE_MAP instead. We provide this map to avoid hammering the CLDR_WINZONE_URL.
#
# This list was generated from CLDR_WINZONE_URL version CLDR_WINZONE_VERSION.
CLDR_TO_MS_TIMEZONE_MAP = {
'Africa/Abidjan': ('Greenwich Standard Time', 'CI'),
'Africa/Accra': ('Greenwich Standard Time', 'GH'),
'Africa/Addis_Ababa': ('E. Africa Standard Time', 'ET'),
'Africa/Algiers': ('W. Central Africa Standard Time', 'DZ'),
'Africa/Asmera': ('E. Africa Standard Time', 'ER'),
'Africa/Bamako': ('Greenwich Standard Time', 'ML'),
'Africa/Bangui': ('W. Central Africa Standard Time', 'CF'),
'Africa/Banjul': ('Greenwich Standard Time', 'GM'),
'Africa/Bissau': ('Greenwich Standard Time', 'GW'),
'Africa/Blantyre': ('South Africa Standard Time', 'MW'),
'Africa/Brazzaville': ('W. Central Africa Standard Time', 'CG'),
'Africa/Bujumbura': ('South Africa Standard Time', 'BI'),
'Africa/Cairo': ('Egypt Standard Time', '001'),
'Africa/Casablanca': ('Morocco Standard Time', '001'),
'Africa/Ceuta': ('Romance Standard Time', 'ES'),
'Africa/Conakry': ('Greenwich Standard Time', 'GN'),
'Africa/Dakar': ('Greenwich Standard Time', 'SN'),
'Africa/Dar_es_Salaam': ('E. Africa Standard Time', 'TZ'),
'Africa/Djibouti': ('E. Africa Standard Time', 'DJ'),
'Africa/Douala': ('W. Central Africa Standard Time', 'CM'),
'Africa/El_Aaiun': ('Morocco Standard Time', 'EH'),
'Africa/Freetown': ('Greenwich Standard Time', 'SL'),
'Africa/Gaborone': ('South Africa Standard Time', 'BW'),
'Africa/Harare': ('South Africa Standard Time', 'ZW'),
'Africa/Johannesburg': ('South Africa Standard Time', '001'),
'Africa/Juba': ('South Sudan Standard Time', '001'),
'Africa/Kampala': ('E. Africa Standard Time', 'UG'),
'Africa/Khartoum': ('Sudan Standard Time', '001'),
'Africa/Kigali': ('South Africa Standard Time', 'RW'),
'Africa/Kinshasa': ('W. Central Africa Standard Time', 'CD'),
'Africa/Lagos': ('W. Central Africa Standard Time', '001'),
'Africa/Libreville': ('W. Central Africa Standard Time', 'GA'),
'Africa/Lome': ('Greenwich Standard Time', 'TG'),
'Africa/Luanda': ('W. Central Africa Standard Time', 'AO'),
'Africa/Lubumbashi': ('South Africa Standard Time', 'CD'),
'Africa/Lusaka': ('South Africa Standard Time', 'ZM'),
'Africa/Malabo': ('W. Central Africa Standard Time', 'GQ'),
'Africa/Maputo': ('South Africa Standard Time', 'MZ'),
'Africa/Maseru': ('South Africa Standard Time', 'LS'),
'Africa/Mbabane': ('South Africa Standard Time', 'SZ'),
'Africa/Mogadishu': ('E. Africa Standard Time', 'SO'),
'Africa/Monrovia': ('Greenwich Standard Time', 'LR'),
'Africa/Nairobi': ('E. Africa Standard Time', '001'),
'Africa/Ndjamena': ('W. Central Africa Standard Time', 'TD'),
'Africa/Niamey': ('W. Central Africa Standard Time', 'NE'),
'Africa/Nouakchott': ('Greenwich Standard Time', 'MR'),
'Africa/Ouagadougou': ('Greenwich Standard Time', 'BF'),
'Africa/Porto-Novo': ('W. Central Africa Standard Time', 'BJ'),
'Africa/Sao_Tome': ('Sao Tome Standard Time', '001'),
'Africa/Tripoli': ('Libya Standard Time', '001'),
'Africa/Tunis': ('W. Central Africa Standard Time', 'TN'),
'Africa/Windhoek': ('Namibia Standard Time', '001'),
'America/Adak': ('Aleutian Standard Time', '001'),
'America/Anchorage': ('Alaskan Standard Time', '001'),
'America/Anguilla': ('SA Western Standard Time', 'AI'),
'America/Antigua': ('SA Western Standard Time', 'AG'),
'America/Araguaina': ('Tocantins Standard Time', '001'),
'America/Argentina/La_Rioja': ('Argentina Standard Time', 'AR'),
'America/Argentina/Rio_Gallegos': ('Argentina Standard Time', 'AR'),
'America/Argentina/Salta': ('Argentina Standard Time', 'AR'),
'America/Argentina/San_Juan': ('Argentina Standard Time', 'AR'),
'America/Argentina/San_Luis': ('Argentina Standard Time', 'AR'),
'America/Argentina/Tucuman': ('Argentina Standard Time', 'AR'),
'America/Argentina/Ushuaia': ('Argentina Standard Time', 'AR'),
'America/Aruba': ('SA Western Standard Time', 'AW'),
'America/Asuncion': ('Paraguay Standard Time', '001'),
'America/Bahia': ('Bahia Standard Time', '001'),
'America/Bahia_Banderas': ('Central Standard Time (Mexico)', 'MX'),
'America/Barbados': ('SA Western Standard Time', 'BB'),
'America/Belem': ('SA Eastern Standard Time', 'BR'),
'America/Belize': ('Central America Standard Time', 'BZ'),
'America/Blanc-Sablon': ('SA Western Standard Time', 'CA'),
'America/Boa_Vista': ('SA Western Standard Time', 'BR'),
'America/Bogota': ('SA Pacific Standard Time', '001'),
'America/Boise': ('Mountain Standard Time', 'US'),
'America/Buenos_Aires': ('Argentina Standard Time', '001'),
'America/Cambridge_Bay': ('Mountain Standard Time', 'CA'),
'America/Campo_Grande': ('Central Brazilian Standard Time', 'BR'),
'America/Cancun': ('Eastern Standard Time (Mexico)', '001'),
'America/Caracas': ('Venezuela Standard Time', '001'),
'America/Catamarca': ('Argentina Standard Time', 'AR'),
'America/Cayenne': ('SA Eastern Standard Time', '001'),
'America/Cayman': ('SA Pacific Standard Time', 'KY'),
'America/Chicago': ('Central Standard Time', '001'),
'America/Chihuahua': ('Mountain Standard Time (Mexico)', '001'),
'America/Coral_Harbour': ('SA Pacific Standard Time', 'CA'),
'America/Cordoba': ('Argentina Standard Time', 'AR'),
'America/Costa_Rica': ('Central America Standard Time', 'CR'),
'America/Creston': ('US Mountain Standard Time', 'CA'),
'America/Cuiaba': ('Central Brazilian Standard Time', '001'),
'America/Curacao': ('SA Western Standard Time', 'CW'),
'America/Danmarkshavn': ('Greenwich Standard Time', 'GL'),
'America/Dawson': ('Yukon Standard Time', 'CA'),
'America/Dawson_Creek': ('US Mountain Standard Time', 'CA'),
'America/Denver': ('Mountain Standard Time', '001'),
'America/Detroit': ('Eastern Standard Time', 'US'),
'America/Dominica': ('SA Western Standard Time', 'DM'),
'America/Edmonton': ('Mountain Standard Time', 'CA'),
'America/Eirunepe': ('SA Pacific Standard Time', 'BR'),
'America/El_Salvador': ('Central America Standard Time', 'SV'),
'America/Fort_Nelson': ('US Mountain Standard Time', 'CA'),
'America/Fortaleza': ('SA Eastern Standard Time', 'BR'),
'America/Glace_Bay': ('Atlantic Standard Time', 'CA'),
'America/Godthab': ('Greenland Standard Time', '001'),
'America/Goose_Bay': ('Atlantic Standard Time', 'CA'),
'America/Grand_Turk': ('Turks And Caicos Standard Time', '001'),
'America/Grenada': ('SA Western Standard Time', 'GD'),
'America/Guadeloupe': ('SA Western Standard Time', 'GP'),
'America/Guatemala': ('Central America Standard Time', '001'),
'America/Guayaquil': ('SA Pacific Standard Time', 'EC'),
'America/Guyana': ('SA Western Standard Time', 'GY'),
'America/Halifax': ('Atlantic Standard Time', '001'),
'America/Havana': ('Cuba Standard Time', '001'),
'America/Hermosillo': ('US Mountain Standard Time', 'MX'),
'America/Indiana/Knox': ('Central Standard Time', 'US'),
'America/Indiana/Marengo': ('US Eastern Standard Time', 'US'),
'America/Indiana/Petersburg': ('Eastern Standard Time', 'US'),
'America/Indiana/Tell_City': ('Central Standard Time', 'US'),
'America/Indiana/Vevay': ('US Eastern Standard Time', 'US'),
'America/Indiana/Vincennes': ('Eastern Standard Time', 'US'),
'America/Indiana/Winamac': ('Eastern Standard Time', 'US'),
'America/Indianapolis': ('US Eastern Standard Time', '001'),
'America/Inuvik': ('Mountain Standard Time', 'CA'),
'America/Iqaluit': ('Eastern Standard Time', 'CA'),
'America/Jamaica': ('SA Pacific Standard Time', 'JM'),
'America/Jujuy': ('Argentina Standard Time', 'AR'),
'America/Juneau': ('Alaskan Standard Time', 'US'),
'America/Kentucky/Monticello': ('Eastern Standard Time', 'US'),
'America/Kralendijk': ('SA Western Standard Time', 'BQ'),
'America/La_Paz': ('SA Western Standard Time', '001'),
'America/Lima': ('SA Pacific Standard Time', 'PE'),
'America/Los_Angeles': ('Pacific Standard Time', '001'),
'America/Louisville': ('Eastern Standard Time', 'US'),
'America/Lower_Princes': ('SA Western Standard Time', 'SX'),
'America/Maceio': ('SA Eastern Standard Time', 'BR'),
'America/Managua': ('Central America Standard Time', 'NI'),
'America/Manaus': ('SA Western Standard Time', 'BR'),
'America/Marigot': ('SA Western Standard Time', 'MF'),
'America/Martinique': ('SA Western Standard Time', 'MQ'),
'America/Matamoros': ('Central Standard Time', 'MX'),
'America/Mazatlan': ('Mountain Standard Time (Mexico)', 'MX'),
'America/Mendoza': ('Argentina Standard Time', 'AR'),
'America/Menominee': ('Central Standard Time', 'US'),
'America/Merida': ('Central Standard Time (Mexico)', 'MX'),
'America/Metlakatla': ('Alaskan Standard Time', 'US'),
'America/Mexico_City': ('Central Standard Time (Mexico)', '001'),
'America/Miquelon': ('Saint Pierre Standard Time', '001'),
'America/Moncton': ('Atlantic Standard Time', 'CA'),
'America/Monterrey': ('Central Standard Time (Mexico)', 'MX'),
'America/Montevideo': ('Montevideo Standard Time', '001'),
'America/Montreal': ('Eastern Standard Time', 'CA'),
'America/Montserrat': ('SA Western Standard Time', 'MS'),
'America/Nassau': ('Eastern Standard Time', 'BS'),
'America/New_York': ('Eastern Standard Time', '001'),
'America/Nipigon': ('Eastern Standard Time', 'CA'),
'America/Nome': ('Alaskan Standard Time', 'US'),
'America/Noronha': ('UTC-02', 'BR'),
'America/North_Dakota/Beulah': ('Central Standard Time', 'US'),
'America/North_Dakota/Center': ('Central Standard Time', 'US'),
'America/North_Dakota/New_Salem': ('Central Standard Time', 'US'),
'America/Ojinaga': ('Mountain Standard Time', 'MX'),
'America/Panama': ('SA Pacific Standard Time', 'PA'),
'America/Pangnirtung': ('Eastern Standard Time', 'CA'),
'America/Paramaribo': ('SA Eastern Standard Time', 'SR'),
'America/Phoenix': ('US Mountain Standard Time', '001'),
'America/Port-au-Prince': ('Haiti Standard Time', '001'),
'America/Port_of_Spain': ('SA Western Standard Time', 'TT'),
'America/Porto_Velho': ('SA Western Standard Time', 'BR'),
'America/Puerto_Rico': ('SA Western Standard Time', 'PR'),
'America/Punta_Arenas': ('Magallanes Standard Time', '001'),
'America/Rainy_River': ('Central Standard Time', 'CA'),
'America/Rankin_Inlet': ('Central Standard Time', 'CA'),
'America/Recife': ('SA Eastern Standard Time', 'BR'),
'America/Regina': ('Canada Central Standard Time', '001'),
'America/Resolute': ('Central Standard Time', 'CA'),
'America/Rio_Branco': ('SA Pacific Standard Time', 'BR'),
'America/Santa_Isabel': ('Pacific Standard Time (Mexico)', 'MX'),
'America/Santarem': ('SA Eastern Standard Time', 'BR'),
'America/Santiago': ('Pacific SA Standard Time', '001'),
'America/Santo_Domingo': ('SA Western Standard Time', 'DO'),
'America/Sao_Paulo': ('E. South America Standard Time', '001'),
'America/Scoresbysund': ('Azores Standard Time', 'GL'),
'America/Sitka': ('Alaskan Standard Time', 'US'),
'America/St_Barthelemy': ('SA Western Standard Time', 'BL'),
'America/St_Johns': ('Newfoundland Standard Time', '001'),
'America/St_Kitts': ('SA Western Standard Time', 'KN'),
'America/St_Lucia': ('SA Western Standard Time', 'LC'),
'America/St_Thomas': ('SA Western Standard Time', 'VI'),
'America/St_Vincent': ('SA Western Standard Time', 'VC'),
'America/Swift_Current': ('Canada Central Standard Time', 'CA'),
'America/Tegucigalpa': ('Central America Standard Time', 'HN'),
'America/Thule': ('Atlantic Standard Time', 'GL'),
'America/Thunder_Bay': ('Eastern Standard Time', 'CA'),
'America/Tijuana': ('Pacific Standard Time (Mexico)', '001'),
'America/Toronto': ('Eastern Standard Time', 'CA'),
'America/Tortola': ('SA Western Standard Time', 'VG'),
'America/Vancouver': ('Pacific Standard Time', 'CA'),
'America/Whitehorse': ('Yukon Standard Time', '001'),
'America/Winnipeg': ('Central Standard Time', 'CA'),
'America/Yakutat': ('Alaskan Standard Time', 'US'),
'America/Yellowknife': ('Mountain Standard Time', 'CA'),
'Antarctica/Casey': ('Central Pacific Standard Time', 'AQ'),
'Antarctica/Davis': ('SE Asia Standard Time', 'AQ'),
'Antarctica/DumontDUrville': ('West Pacific Standard Time', 'AQ'),
'Antarctica/Macquarie': ('Tasmania Standard Time', 'AU'),
'Antarctica/Mawson': ('West Asia Standard Time', 'AQ'),
'Antarctica/McMurdo': ('New Zealand Standard Time', 'AQ'),
'Antarctica/Palmer': ('SA Eastern Standard Time', 'AQ'),
'Antarctica/Rothera': ('SA Eastern Standard Time', 'AQ'),
'Antarctica/Syowa': ('E. Africa Standard Time', 'AQ'),
'Antarctica/Vostok': ('Central Asia Standard Time', 'AQ'),
'Arctic/Longyearbyen': ('W. Europe Standard Time', 'SJ'),
'Asia/Aden': ('Arab Standard Time', 'YE'),
'Asia/Almaty': ('Central Asia Standard Time', '001'),
'Asia/Amman': ('Jordan Standard Time', '001'),
'Asia/Anadyr': ('Russia Time Zone 11', 'RU'),
'Asia/Aqtau': ('West Asia Standard Time', 'KZ'),
'Asia/Aqtobe': ('West Asia Standard Time', 'KZ'),
'Asia/Ashgabat': ('West Asia Standard Time', 'TM'),
'Asia/Atyrau': ('West Asia Standard Time', 'KZ'),
'Asia/Baghdad': ('Arabic Standard Time', '001'),
'Asia/Bahrain': ('Arab Standard Time', 'BH'),
'Asia/Baku': ('Azerbaijan Standard Time', '001'),
'Asia/Bangkok': ('SE Asia Standard Time', '001'),
'Asia/Barnaul': ('Altai Standard Time', '001'),
'Asia/Beirut': ('Middle East Standard Time', '001'),
'Asia/Bishkek': ('Central Asia Standard Time', 'KG'),
'Asia/Brunei': ('Singapore Standard Time', 'BN'),
'Asia/Calcutta': ('India Standard Time', '001'),
'Asia/Chita': ('Transbaikal Standard Time', '001'),
'Asia/Choibalsan': ('Ulaanbaatar Standard Time', 'MN'),
'Asia/Colombo': ('Sri Lanka Standard Time', '001'),
'Asia/Damascus': ('Syria Standard Time', '001'),
'Asia/Dhaka': ('Bangladesh Standard Time', '001'),
'Asia/Dili': ('Tokyo Standard Time', 'TL'),
'Asia/Dubai': ('Arabian Standard Time', '001'),
'Asia/Dushanbe': ('West Asia Standard Time', 'TJ'),
'Asia/Famagusta': ('GTB Standard Time', 'CY'),
'Asia/Gaza': ('West Bank Standard Time', 'PS'),
'Asia/Hebron': ('West Bank Standard Time', '001'),
'Asia/Hong_Kong': ('China Standard Time', 'HK'),
'Asia/Hovd': ('W. Mongolia Standard Time', '001'),
'Asia/Irkutsk': ('North Asia East Standard Time', '001'),
'Asia/Jakarta': ('SE Asia Standard Time', 'ID'),
'Asia/Jayapura': ('Tokyo Standard Time', 'ID'),
'Asia/Jerusalem': ('Israel Standard Time', '001'),
'Asia/Kabul': ('Afghanistan Standard Time', '001'),
'Asia/Kamchatka': ('Russia Time Zone 11', '001'),
'Asia/Karachi': ('Pakistan Standard Time', '001'),
'Asia/Katmandu': ('Nepal Standard Time', '001'),
'Asia/Khandyga': ('Yakutsk Standard Time', 'RU'),
'Asia/Krasnoyarsk': ('North Asia Standard Time', '001'),
'Asia/Kuala_Lumpur': ('Singapore Standard Time', 'MY'),
'Asia/Kuching': ('Singapore Standard Time', 'MY'),
'Asia/Kuwait': ('Arab Standard Time', 'KW'),
'Asia/Macau': ('China Standard Time', 'MO'),
'Asia/Magadan': ('Magadan Standard Time', '001'),
'Asia/Makassar': ('Singapore Standard Time', 'ID'),
'Asia/Manila': ('Singapore Standard Time', 'PH'),
'Asia/Muscat': ('Arabian Standard Time', 'OM'),
'Asia/Nicosia': ('GTB Standard Time', 'CY'),
'Asia/Novokuznetsk': ('North Asia Standard Time', 'RU'),
'Asia/Novosibirsk': ('N. Central Asia Standard Time', '001'),
'Asia/Omsk': ('Omsk Standard Time', '001'),
'Asia/Oral': ('West Asia Standard Time', 'KZ'),
'Asia/Phnom_Penh': ('SE Asia Standard Time', 'KH'),
'Asia/Pontianak': ('SE Asia Standard Time', 'ID'),
'Asia/Pyongyang': ('North Korea Standard Time', '001'),
'Asia/Qatar': ('Arab Standard Time', 'QA'),
'Asia/Qostanay': ('Central Asia Standard Time', 'KZ'),
'Asia/Qyzylorda': ('Qyzylorda Standard Time', '001'),
'Asia/Rangoon': ('Myanmar Standard Time', '001'),
'Asia/Riyadh': ('Arab Standard Time', '001'),
'Asia/Saigon': ('SE Asia Standard Time', 'VN'),
'Asia/Sakhalin': ('Sakhalin Standard Time', '001'),
'Asia/Samarkand': ('West Asia Standard Time', 'UZ'),
'Asia/Seoul': ('Korea Standard Time', '001'),
'Asia/Shanghai': ('China Standard Time', '001'),
'Asia/Singapore': ('Singapore Standard Time', '001'),
'Asia/Srednekolymsk': ('Russia Time Zone 10', '001'),
'Asia/Taipei': ('Taipei Standard Time', '001'),
'Asia/Tashkent': ('West Asia Standard Time', '001'),
'Asia/Tbilisi': ('Georgian Standard Time', '001'),
'Asia/Tehran': ('Iran Standard Time', '001'),
'Asia/Thimphu': ('Bangladesh Standard Time', 'BT'),
'Asia/Tokyo': ('Tokyo Standard Time', '001'),
'Asia/Tomsk': ('Tomsk Standard Time', '001'),
'Asia/Ulaanbaatar': ('Ulaanbaatar Standard Time', '001'),
'Asia/Urumqi': ('Central Asia Standard Time', 'CN'),
'Asia/Ust-Nera': ('Vladivostok Standard Time', 'RU'),
'Asia/Vientiane': ('SE Asia Standard Time', 'LA'),
'Asia/Vladivostok': ('Vladivostok Standard Time', '001'),
'Asia/Yakutsk': ('Yakutsk Standard Time', '001'),
'Asia/Yekaterinburg': ('Ekaterinburg Standard Time', '001'),
'Asia/Yerevan': ('Caucasus Standard Time', '001'),
'Atlantic/Azores': ('Azores Standard Time', '001'),
'Atlantic/Bermuda': ('Atlantic Standard Time', 'BM'),
'Atlantic/Canary': ('GMT Standard Time', 'ES'),
'Atlantic/Cape_Verde': ('Cape Verde Standard Time', '001'),
'Atlantic/Faeroe': ('GMT Standard Time', 'FO'),
'Atlantic/Madeira': ('GMT Standard Time', 'PT'),
'Atlantic/Reykjavik': ('Greenwich Standard Time', '001'),
'Atlantic/South_Georgia': ('UTC-02', 'GS'),
'Atlantic/St_Helena': ('Greenwich Standard Time', 'SH'),
'Atlantic/Stanley': ('SA Eastern Standard Time', 'FK'),
'Australia/Adelaide': ('Cen. Australia Standard Time', '001'),
'Australia/Brisbane': ('E. Australia Standard Time', '001'),
'Australia/Broken_Hill': ('Cen. Australia Standard Time', 'AU'),
'Australia/Currie': ('Tasmania Standard Time', 'AU'),
'Australia/Darwin': ('AUS Central Standard Time', '001'),
'Australia/Eucla': ('Aus Central W. Standard Time', '001'),
'Australia/Hobart': ('Tasmania Standard Time', '001'),
'Australia/Lindeman': ('E. Australia Standard Time', 'AU'),
'Australia/Lord_Howe': ('Lord Howe Standard Time', '001'),
'Australia/Melbourne': ('AUS Eastern Standard Time', 'AU'),
'Australia/Perth': ('W. Australia Standard Time', '001'),
'Australia/Sydney': ('AUS Eastern Standard Time', '001'),
'CST6CDT': ('Central Standard Time', 'ZZ'),
'EST5EDT': ('Eastern Standard Time', 'ZZ'),
'Etc/GMT': ('UTC', 'ZZ'),
'Etc/GMT+1': ('Cape Verde Standard Time', 'ZZ'),
'Etc/GMT+10': ('Hawaiian Standard Time', 'ZZ'),
'Etc/GMT+11': ('UTC-11', '001'),
'Etc/GMT+12': ('Dateline Standard Time', '001'),
'Etc/GMT+2': ('UTC-02', '001'),
'Etc/GMT+3': ('SA Eastern Standard Time', 'ZZ'),
'Etc/GMT+4': ('SA Western Standard Time', 'ZZ'),
'Etc/GMT+5': ('SA Pacific Standard Time', 'ZZ'),
'Etc/GMT+6': ('Central America Standard Time', 'ZZ'),
'Etc/GMT+7': ('US Mountain Standard Time', 'ZZ'),
'Etc/GMT+8': ('UTC-08', '001'),
'Etc/GMT+9': ('UTC-09', '001'),
'Etc/GMT-1': ('W. Central Africa Standard Time', 'ZZ'),
'Etc/GMT-10': ('West Pacific Standard Time', 'ZZ'),
'Etc/GMT-11': ('Central Pacific Standard Time', 'ZZ'),
'Etc/GMT-12': ('UTC+12', '001'),
'Etc/GMT-13': ('UTC+13', '001'),
'Etc/GMT-14': ('Line Islands Standard Time', 'ZZ'),
'Etc/GMT-2': ('South Africa Standard Time', 'ZZ'),
'Etc/GMT-3': ('E. Africa Standard Time', 'ZZ'),
'Etc/GMT-4': ('Arabian Standard Time', 'ZZ'),
'Etc/GMT-5': ('West Asia Standard Time', 'ZZ'),
'Etc/GMT-6': ('Central Asia Standard Time', 'ZZ'),
'Etc/GMT-7': ('SE Asia Standard Time', 'ZZ'),
'Etc/GMT-8': ('Singapore Standard Time', 'ZZ'),
'Etc/GMT-9': ('Tokyo Standard Time', 'ZZ'),
'Etc/UTC': ('UTC', '001'),
'Europe/Amsterdam': ('W. Europe Standard Time', 'NL'),
'Europe/Andorra': ('W. Europe Standard Time', 'AD'),
'Europe/Astrakhan': ('Astrakhan Standard Time', '001'),
'Europe/Athens': ('GTB Standard Time', 'GR'),
'Europe/Belgrade': ('Central Europe Standard Time', 'RS'),
'Europe/Berlin': ('W. Europe Standard Time', '001'),
'Europe/Bratislava': ('Central Europe Standard Time', 'SK'),
'Europe/Brussels': ('Romance Standard Time', 'BE'),
'Europe/Bucharest': ('GTB Standard Time', '001'),
'Europe/Budapest': ('Central Europe Standard Time', '001'),
'Europe/Busingen': ('W. Europe Standard Time', 'DE'),
'Europe/Chisinau': ('E. Europe Standard Time', '001'),
'Europe/Copenhagen': ('Romance Standard Time', 'DK'),
'Europe/Dublin': ('GMT Standard Time', 'IE'),
'Europe/Gibraltar': ('W. Europe Standard Time', 'GI'),
'Europe/Guernsey': ('GMT Standard Time', 'GG'),
'Europe/Helsinki': ('FLE Standard Time', 'FI'),
'Europe/Isle_of_Man': ('GMT Standard Time', 'IM'),
'Europe/Istanbul': ('Turkey Standard Time', '001'),
'Europe/Jersey': ('GMT Standard Time', 'JE'),
'Europe/Kaliningrad': ('Kaliningrad Standard Time', '001'),
'Europe/Kiev': ('FLE Standard Time', '001'),
'Europe/Kirov': ('Russian Standard Time', 'RU'),
'Europe/Lisbon': ('GMT Standard Time', 'PT'),
'Europe/Ljubljana': ('Central Europe Standard Time', 'SI'),
'Europe/London': ('GMT Standard Time', '001'),
'Europe/Luxembourg': ('W. Europe Standard Time', 'LU'),
'Europe/Madrid': ('Romance Standard Time', 'ES'),
'Europe/Malta': ('W. Europe Standard Time', 'MT'),
'Europe/Mariehamn': ('FLE Standard Time', 'AX'),
'Europe/Minsk': ('Belarus Standard Time', '001'),
'Europe/Monaco': ('W. Europe Standard Time', 'MC'),
'Europe/Moscow': ('Russian Standard Time', '001'),
'Europe/Oslo': ('W. Europe Standard Time', 'NO'),
'Europe/Paris': ('Romance Standard Time', '001'),
'Europe/Podgorica': ('Central Europe Standard Time', 'ME'),
'Europe/Prague': ('Central Europe Standard Time', 'CZ'),
'Europe/Riga': ('FLE Standard Time', 'LV'),
'Europe/Rome': ('W. Europe Standard Time', 'IT'),
'Europe/Samara': ('Russia Time Zone 3', '001'),
'Europe/San_Marino': ('W. Europe Standard Time', 'SM'),
'Europe/Sarajevo': ('Central European Standard Time', 'BA'),
'Europe/Saratov': ('Saratov Standard Time', '001'),
'Europe/Simferopol': ('Russian Standard Time', 'UA'),
'Europe/Skopje': ('Central European Standard Time', 'MK'),
'Europe/Sofia': ('FLE Standard Time', 'BG'),
'Europe/Stockholm': ('W. Europe Standard Time', 'SE'),
'Europe/Tallinn': ('FLE Standard Time', 'EE'),
'Europe/Tirane': ('Central Europe Standard Time', 'AL'),
'Europe/Ulyanovsk': ('Astrakhan Standard Time', 'RU'),
'Europe/Uzhgorod': ('FLE Standard Time', 'UA'),
'Europe/Vaduz': ('W. Europe Standard Time', 'LI'),
'Europe/Vatican': ('W. Europe Standard Time', 'VA'),
'Europe/Vienna': ('W. Europe Standard Time', 'AT'),
'Europe/Vilnius': ('FLE Standard Time', 'LT'),
'Europe/Volgograd': ('Volgograd Standard Time', '001'),
'Europe/Warsaw': ('Central European Standard Time', '001'),
'Europe/Zagreb': ('Central European Standard Time', 'HR'),
'Europe/Zaporozhye': ('FLE Standard Time', 'UA'),
'Europe/Zurich': ('W. Europe Standard Time', 'CH'),
'Indian/Antananarivo': ('E. Africa Standard Time', 'MG'),
'Indian/Chagos': ('Central Asia Standard Time', 'IO'),
'Indian/Christmas': ('SE Asia Standard Time', 'CX'),
'Indian/Cocos': ('Myanmar Standard Time', 'CC'),
'Indian/Comoro': ('E. Africa Standard Time', 'KM'),
'Indian/Kerguelen': ('West Asia Standard Time', 'TF'),
'Indian/Mahe': ('Mauritius Standard Time', 'SC'),
'Indian/Maldives': ('West Asia Standard Time', 'MV'),
'Indian/Mauritius': ('Mauritius Standard Time', '001'),
'Indian/Mayotte': ('E. Africa Standard Time', 'YT'),
'Indian/Reunion': ('Mauritius Standard Time', 'RE'),
'MST7MDT': ('Mountain Standard Time', 'ZZ'),
'PST8PDT': ('Pacific Standard Time', 'ZZ'),
'Pacific/Apia': ('Samoa Standard Time', '001'),
'Pacific/Auckland': ('New Zealand Standard Time', '001'),
'Pacific/Bougainville': ('Bougainville Standard Time', '001'),
'Pacific/Chatham': ('Chatham Islands Standard Time', '001'),
'Pacific/Easter': ('Easter Island Standard Time', '001'),
'Pacific/Efate': ('Central Pacific Standard Time', 'VU'),
'Pacific/Enderbury': ('UTC+13', 'KI'),
'Pacific/Fakaofo': ('UTC+13', 'TK'),
'Pacific/Fiji': ('Fiji Standard Time', '001'),
'Pacific/Funafuti': ('UTC+12', 'TV'),
'Pacific/Galapagos': ('Central America Standard Time', 'EC'),
'Pacific/Gambier': ('UTC-09', 'PF'),
'Pacific/Guadalcanal': ('Central Pacific Standard Time', '001'),
'Pacific/Guam': ('West Pacific Standard Time', 'GU'),
'Pacific/Honolulu': ('Hawaiian Standard Time', '001'),
'Pacific/Johnston': ('Hawaiian Standard Time', 'UM'),
'Pacific/Kiritimati': ('Line Islands Standard Time', '001'),
'Pacific/Kosrae': ('Central Pacific Standard Time', 'FM'),
'Pacific/Kwajalein': ('UTC+12', 'MH'),
'Pacific/Majuro': ('UTC+12', 'MH'),
'Pacific/Marquesas': ('Marquesas Standard Time', '001'),
'Pacific/Midway': ('UTC-11', 'UM'),
'Pacific/Nauru': ('UTC+12', 'NR'),
'Pacific/Niue': ('UTC-11', 'NU'),
'Pacific/Norfolk': ('Norfolk Standard Time', '001'),
'Pacific/Noumea': ('Central Pacific Standard Time', 'NC'),
'Pacific/Pago_Pago': ('UTC-11', 'AS'),
'Pacific/Palau': ('Tokyo Standard Time', 'PW'),
'Pacific/Pitcairn': ('UTC-08', 'PN'),
'Pacific/Ponape': ('Central Pacific Standard Time', 'FM'),
'Pacific/Port_Moresby': ('West Pacific Standard Time', '001'),
'Pacific/Rarotonga': ('Hawaiian Standard Time', 'CK'),
'Pacific/Saipan': ('West Pacific Standard Time', 'MP'),
'Pacific/Tahiti': ('Hawaiian Standard Time', 'PF'),
'Pacific/Tarawa': ('UTC+12', 'KI'),
'Pacific/Tongatapu': ('Tonga Standard Time', '001'),
'Pacific/Truk': ('West Pacific Standard Time', 'FM'),
'Pacific/Wake': ('UTC+12', 'UM'),
'Pacific/Wallis': ('UTC+12', 'WF'),
}
# Timezone names used by IANA but not mentioned in the CLDR. All of them have an alias in CLDR. This is essentially
# all timezone names that zoneinfo.available_timezones() contains but CLDR doesn't. Aliases were found
# at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
IANA_TO_MS_TIMEZONE_MAP = dict(
CLDR_TO_MS_TIMEZONE_MAP,
**{
'Africa/Asmara': CLDR_TO_MS_TIMEZONE_MAP['Africa/Nairobi'],
'Africa/Timbuktu': CLDR_TO_MS_TIMEZONE_MAP['Africa/Abidjan'],
'America/Argentina/Buenos_Aires': CLDR_TO_MS_TIMEZONE_MAP['America/Buenos_Aires'],
'America/Argentina/Catamarca': CLDR_TO_MS_TIMEZONE_MAP['America/Catamarca'],
'America/Argentina/ComodRivadavia': CLDR_TO_MS_TIMEZONE_MAP['America/Catamarca'],
'America/Argentina/Cordoba': CLDR_TO_MS_TIMEZONE_MAP['America/Cordoba'],
'America/Argentina/Jujuy': CLDR_TO_MS_TIMEZONE_MAP['America/Jujuy'],
'America/Argentina/Mendoza': CLDR_TO_MS_TIMEZONE_MAP['America/Mendoza'],
'America/Atikokan': CLDR_TO_MS_TIMEZONE_MAP['America/Coral_Harbour'],
'America/Atka': CLDR_TO_MS_TIMEZONE_MAP['America/Adak'],
'America/Ensenada': CLDR_TO_MS_TIMEZONE_MAP['America/Tijuana'],
'America/Fort_Wayne': CLDR_TO_MS_TIMEZONE_MAP['America/Indianapolis'],
'America/Indiana/Indianapolis': CLDR_TO_MS_TIMEZONE_MAP['America/Indianapolis'],
'America/Kentucky/Louisville': CLDR_TO_MS_TIMEZONE_MAP['America/Louisville'],
'America/Knox_IN': CLDR_TO_MS_TIMEZONE_MAP['America/Indiana/Knox'],
'America/Nuuk': CLDR_TO_MS_TIMEZONE_MAP['America/Godthab'],
'America/Porto_Acre': CLDR_TO_MS_TIMEZONE_MAP['America/Rio_Branco'],
'America/Rosario': CLDR_TO_MS_TIMEZONE_MAP['America/Cordoba'],
'America/Shiprock': CLDR_TO_MS_TIMEZONE_MAP['America/Denver'],
'America/Virgin': CLDR_TO_MS_TIMEZONE_MAP['America/Port_of_Spain'],
'Antarctica/South_Pole': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Auckland'],
'Antarctica/Troll': CLDR_TO_MS_TIMEZONE_MAP['Europe/Oslo'],
'Asia/Ashkhabad': CLDR_TO_MS_TIMEZONE_MAP['Asia/Ashgabat'],
'Asia/Chongqing': CLDR_TO_MS_TIMEZONE_MAP['Asia/Shanghai'],
'Asia/Chungking': CLDR_TO_MS_TIMEZONE_MAP['Asia/Shanghai'],
'Asia/Dacca': CLDR_TO_MS_TIMEZONE_MAP['Asia/Dhaka'],
'Asia/Harbin': CLDR_TO_MS_TIMEZONE_MAP['Asia/Shanghai'],
'Asia/Ho_Chi_Minh': CLDR_TO_MS_TIMEZONE_MAP['Asia/Saigon'],
'Asia/Istanbul': CLDR_TO_MS_TIMEZONE_MAP['Europe/Istanbul'],
'Asia/Kashgar': CLDR_TO_MS_TIMEZONE_MAP['Asia/Urumqi'],
'Asia/Kathmandu': CLDR_TO_MS_TIMEZONE_MAP['Asia/Katmandu'],
'Asia/Kolkata': CLDR_TO_MS_TIMEZONE_MAP['Asia/Calcutta'],
'Asia/Macao': CLDR_TO_MS_TIMEZONE_MAP['Asia/Macau'],
'Asia/Tel_Aviv': CLDR_TO_MS_TIMEZONE_MAP['Asia/Jerusalem'],
'Asia/Thimbu': CLDR_TO_MS_TIMEZONE_MAP['Asia/Thimphu'],
'Asia/Ujung_Pandang': CLDR_TO_MS_TIMEZONE_MAP['Asia/Makassar'],
'Asia/Ulan_Bator': CLDR_TO_MS_TIMEZONE_MAP['Asia/Ulaanbaatar'],
'Asia/Yangon': CLDR_TO_MS_TIMEZONE_MAP['Asia/Rangoon'],
'Atlantic/Faroe': CLDR_TO_MS_TIMEZONE_MAP['Atlantic/Faeroe'],
'Atlantic/Jan_Mayen': CLDR_TO_MS_TIMEZONE_MAP['Europe/Oslo'],
'Australia/ACT': CLDR_TO_MS_TIMEZONE_MAP['Australia/Sydney'],
'Australia/Canberra': CLDR_TO_MS_TIMEZONE_MAP['Australia/Sydney'],
'Australia/LHI': CLDR_TO_MS_TIMEZONE_MAP['Australia/Lord_Howe'],
'Australia/NSW': CLDR_TO_MS_TIMEZONE_MAP['Australia/Sydney'],
'Australia/North': CLDR_TO_MS_TIMEZONE_MAP['Australia/Darwin'],
'Australia/Queensland': CLDR_TO_MS_TIMEZONE_MAP['Australia/Brisbane'],
'Australia/South': CLDR_TO_MS_TIMEZONE_MAP['Australia/Adelaide'],
'Australia/Tasmania': CLDR_TO_MS_TIMEZONE_MAP['Australia/Hobart'],
'Australia/Victoria': CLDR_TO_MS_TIMEZONE_MAP['Australia/Melbourne'],
'Australia/West': CLDR_TO_MS_TIMEZONE_MAP['Australia/Perth'],
'Australia/Yancowinna': CLDR_TO_MS_TIMEZONE_MAP['Australia/Broken_Hill'],
'Brazil/Acre': CLDR_TO_MS_TIMEZONE_MAP['America/Rio_Branco'],
'Brazil/DeNoronha': CLDR_TO_MS_TIMEZONE_MAP['America/Noronha'],
'Brazil/East': CLDR_TO_MS_TIMEZONE_MAP['America/Sao_Paulo'],
'Brazil/West': CLDR_TO_MS_TIMEZONE_MAP['America/Manaus'],
'CET': CLDR_TO_MS_TIMEZONE_MAP['Europe/Paris'],
'Canada/Atlantic': CLDR_TO_MS_TIMEZONE_MAP['America/Halifax'],
'Canada/Central': CLDR_TO_MS_TIMEZONE_MAP['America/Winnipeg'],
'Canada/Eastern': CLDR_TO_MS_TIMEZONE_MAP['America/Toronto'],
'Canada/Mountain': CLDR_TO_MS_TIMEZONE_MAP['America/Edmonton'],
'Canada/Newfoundland': CLDR_TO_MS_TIMEZONE_MAP['America/St_Johns'],
'Canada/Pacific': CLDR_TO_MS_TIMEZONE_MAP['America/Vancouver'],
'Canada/Saskatchewan': CLDR_TO_MS_TIMEZONE_MAP['America/Regina'],
'Canada/Yukon': CLDR_TO_MS_TIMEZONE_MAP['America/Whitehorse'],
'Chile/Continental': CLDR_TO_MS_TIMEZONE_MAP['America/Santiago'],
'Chile/EasterIsland': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Easter'],
'Cuba': CLDR_TO_MS_TIMEZONE_MAP['America/Havana'],
'EET': CLDR_TO_MS_TIMEZONE_MAP['Europe/Sofia'],
'EST': CLDR_TO_MS_TIMEZONE_MAP['America/Cancun'],
'Egypt': CLDR_TO_MS_TIMEZONE_MAP['Africa/Cairo'],
'Eire': CLDR_TO_MS_TIMEZONE_MAP['Europe/Dublin'],
'Etc/GMT+0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'Etc/GMT-0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'Etc/GMT0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'Etc/Greenwich': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'Etc/UCT': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'Etc/Universal': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'Etc/Zulu': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'Europe/Belfast': CLDR_TO_MS_TIMEZONE_MAP['Europe/London'],
'Europe/Nicosia': CLDR_TO_MS_TIMEZONE_MAP['Asia/Nicosia'],
'Europe/Tiraspol': CLDR_TO_MS_TIMEZONE_MAP['Europe/Chisinau'],
'Factory': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'GB': CLDR_TO_MS_TIMEZONE_MAP['Europe/London'],
'GB-Eire': CLDR_TO_MS_TIMEZONE_MAP['Europe/London'],
'GMT': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'GMT+0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'GMT-0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'GMT0': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'Greenwich': CLDR_TO_MS_TIMEZONE_MAP['Etc/GMT'],
'HST': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Honolulu'],
'Hongkong': CLDR_TO_MS_TIMEZONE_MAP['Asia/Hong_Kong'],
'Iceland': CLDR_TO_MS_TIMEZONE_MAP['Atlantic/Reykjavik'],
'Iran': CLDR_TO_MS_TIMEZONE_MAP['Asia/Tehran'],
'Israel': CLDR_TO_MS_TIMEZONE_MAP['Asia/Jerusalem'],
'Jamaica': CLDR_TO_MS_TIMEZONE_MAP['America/Jamaica'],
'Japan': CLDR_TO_MS_TIMEZONE_MAP['Asia/Tokyo'],
'Kwajalein': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Kwajalein'],
'Libya': CLDR_TO_MS_TIMEZONE_MAP['Africa/Tripoli'],
'MET': CLDR_TO_MS_TIMEZONE_MAP['Europe/Paris'],
'MST': CLDR_TO_MS_TIMEZONE_MAP['America/Phoenix'],
'Mexico/BajaNorte': CLDR_TO_MS_TIMEZONE_MAP['America/Tijuana'],
'Mexico/BajaSur': CLDR_TO_MS_TIMEZONE_MAP['America/Mazatlan'],
'Mexico/General': CLDR_TO_MS_TIMEZONE_MAP['America/Mexico_City'],
'NZ': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Auckland'],
'NZ-CHAT': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Chatham'],
'Navajo': CLDR_TO_MS_TIMEZONE_MAP['America/Denver'],
'PRC': CLDR_TO_MS_TIMEZONE_MAP['Asia/Shanghai'],
'Pacific/Chuuk': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Truk'],
'Pacific/Kanton': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Enderbury'],
'Pacific/Pohnpei': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Ponape'],
'Pacific/Samoa': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Pago_Pago'],
'Pacific/Yap': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Truk'],
'Poland': CLDR_TO_MS_TIMEZONE_MAP['Europe/Warsaw'],
'Portugal': CLDR_TO_MS_TIMEZONE_MAP['Europe/Lisbon'],
'ROC': CLDR_TO_MS_TIMEZONE_MAP['Asia/Taipei'],
'ROK': CLDR_TO_MS_TIMEZONE_MAP['Asia/Seoul'],
'Singapore': CLDR_TO_MS_TIMEZONE_MAP['Asia/Singapore'],
'Turkey': CLDR_TO_MS_TIMEZONE_MAP['Europe/Istanbul'],
'UCT': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'US/Alaska': CLDR_TO_MS_TIMEZONE_MAP['America/Anchorage'],
'US/Aleutian': CLDR_TO_MS_TIMEZONE_MAP['America/Adak'],
'US/Arizona': CLDR_TO_MS_TIMEZONE_MAP['America/Phoenix'],
'US/Central': CLDR_TO_MS_TIMEZONE_MAP['America/Chicago'],
'US/East-Indiana': CLDR_TO_MS_TIMEZONE_MAP['America/Indianapolis'],
'US/Eastern': CLDR_TO_MS_TIMEZONE_MAP['America/New_York'],
'US/Hawaii': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Honolulu'],
'US/Indiana-Starke': CLDR_TO_MS_TIMEZONE_MAP['America/Indiana/Knox'],
'US/Michigan': CLDR_TO_MS_TIMEZONE_MAP['America/Detroit'],
'US/Mountain': CLDR_TO_MS_TIMEZONE_MAP['America/Denver'],
'US/Pacific': CLDR_TO_MS_TIMEZONE_MAP['America/Los_Angeles'],
'US/Samoa': CLDR_TO_MS_TIMEZONE_MAP['Pacific/Pago_Pago'],
'UTC': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'Universal': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
'W-SU': CLDR_TO_MS_TIMEZONE_MAP['Europe/Moscow'],
'WET': CLDR_TO_MS_TIMEZONE_MAP['Europe/Lisbon'],
'Zulu': CLDR_TO_MS_TIMEZONE_MAP['Etc/UTC'],
}
)
# Reverse map from Microsoft timezone ID to IANA timezone name. Non-IANA timezone ID's can be added here.
MS_TIMEZONE_TO_IANA_MAP = dict(
# Use the CLDR map because the IANA map contains deprecated aliases that not all systems support
{v[0]: k for k, v in CLDR_TO_MS_TIMEZONE_MAP.items() if v[1] == DEFAULT_TERRITORY},
**{
'tzone://Microsoft/Utc': 'UTC',
}
)
Functions
def generate_map(timeout=10)
-
Create a new CLDR_TO_MS_TIMEZONE_MAP map from the CLDR data. Used when the CLDR database is updated.
:param timeout: (Default value = 10) :return:
Expand source code
def generate_map(timeout=10): """Create a new CLDR_TO_MS_TIMEZONE_MAP map from the CLDR data. Used when the CLDR database is updated. :param timeout: (Default value = 10) :return: """ r = requests.get(CLDR_WINZONE_URL, timeout=timeout) if r.status_code != 200: raise ValueError('Unexpected response: %s' % r) tz_map = {} timezones_elem = to_xml(r.content).find('windowsZones').find('mapTimezones') type_version = timezones_elem.get('typeVersion') other_version = timezones_elem.get('otherVersion') for e in timezones_elem.findall('mapZone'): for location in re.split(r'\s+', e.get('type')): if e.get('territory') == DEFAULT_TERRITORY or location not in tz_map: # Prefer default territory. This is so MS_TIMEZONE_TO_IANA_MAP maps from MS timezone ID back to the # "preferred" region/location timezone name. if not location: raise ValueError('Expected location') tz_map[location] = e.get('other'), e.get('territory') return type_version, other_version, tz_map