Created
February 17, 2021 01:49
-
-
Save biblicabeebli/5cc40b4ded7edc03d07cb87336efb4b6 to your computer and use it in GitHub Desktop.
The proper way to get a list of timezones
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from collections import defaultdict | |
| from datetime import timedelta | |
| import pytz | |
| from dateutil import tz | |
| def timedelta_to_label(td: timedelta) -> str: | |
| """ returns a string like +1:00 """ | |
| label = "-" + str(abs(td)) if td.total_seconds() < 0 else "+" + str(abs(td)) | |
| return label[:-3] | |
| def string_sorter(key: str): | |
| """ get the first timedelta's floating point representation as the 'key' in our sort algo.""" | |
| return float(key.split("/")[0].replace(":", ".")) | |
| def build_dictionary_of_timezones(): | |
| # defaultdicts are cool. | |
| zones_by_offset = defaultdict(list) | |
| # (at time of development) this provides all non-deprecated timezones. | |
| tzs = [] | |
| for _, timezones_by_country in pytz.country_timezones.items(): | |
| tzs.extend(timezones_by_country) | |
| tzs.sort() | |
| # pytz.common_timezones includes some deprecated tzs, pytz.all_timezones has even more. | |
| for zone_name in tzs: | |
| # this 'tz_info' variable's type may be dependent on your platform, which is ... just insane. | |
| # This has been tested and works on Ubuntu and AWS Linux 1. | |
| tz_info: tz.tzfile = tz.gettz(zone_name) | |
| utc_offset: timedelta = tz_info._ttinfo_std.delta | |
| # No DST case | |
| if tz_info._ttinfo_dst is None: | |
| label = timedelta_to_label(utc_offset) | |
| else: | |
| dst_offset = tz_info._ttinfo_dst.delta | |
| # fun timezone case: some timezones HAD daylight savings in the past, but not anymore. | |
| # treat those as not having dst because anything else is madness. | |
| if dst_offset == utc_offset: | |
| label = timedelta_to_label(utc_offset) | |
| else: | |
| # this ordering yields +4:00/+5:00 ordering in most cases, but there are exceptions? | |
| # It's not hemispheric, I don't what those places are doing with time. | |
| label = f"{timedelta_to_label(utc_offset)}/{timedelta_to_label(dst_offset)}" | |
| zones_by_offset[label].append(zone_name) | |
| and_finally_sorted = {} | |
| for offset in sorted(zones_by_offset, key=string_sorter): | |
| and_finally_sorted[offset] = zones_by_offset[offset] | |
| return and_finally_sorted | |
| def flatten_time_zones(all_zones_by_offset): | |
| """ Builds a dropdown-friendly list of tuples for populating a dropdown. """ | |
| ret = [] | |
| for offset_numbers, locations in all_zones_by_offset.items(): | |
| for location_names in locations: | |
| ret.append([location_names, offset_numbers + " - " + location_names]) | |
| return ret | |
| all_zones_by_offset = build_dictionary_of_timezones() | |
| COMMON_TIMEZONES_DROPDOWN = flatten_time_zones(all_zones_by_offset) | |
| # and statically: | |
| COMMON_TIMEZONES_DROPDOWN = \ | |
| [["Pacific/Midway", "-11:00 - Pacific/Midway"], | |
| ["Pacific/Niue", "-11:00 - Pacific/Niue"], | |
| ["Pacific/Pago_Pago", "-11:00 - Pacific/Pago_Pago"], | |
| ["America/Adak", "-10:00/-9:00 - America/Adak"], | |
| ["Pacific/Honolulu", "-10:00/-9:30 - Pacific/Honolulu"], | |
| ["Pacific/Rarotonga", "-10:00/-9:30 - Pacific/Rarotonga"], | |
| ["Pacific/Tahiti", "-10:00 - Pacific/Tahiti"], | |
| ["Pacific/Marquesas", "-9:30 - Pacific/Marquesas"], | |
| ["America/Anchorage", "-9:00/-8:00 - America/Anchorage"], | |
| ["America/Juneau", "-9:00/-8:00 - America/Juneau"], | |
| ["America/Metlakatla", "-9:00/-8:00 - America/Metlakatla"], | |
| ["America/Nome", "-9:00/-8:00 - America/Nome"], | |
| ["America/Sitka", "-9:00/-8:00 - America/Sitka"], | |
| ["America/Yakutat", "-9:00/-8:00 - America/Yakutat"], | |
| ["Pacific/Gambier", "-9:00 - Pacific/Gambier"], | |
| ["America/Los_Angeles", "-8:00/-7:00 - America/Los_Angeles"], | |
| ["America/Tijuana", "-8:00/-7:00 - America/Tijuana"], | |
| ["America/Vancouver", "-8:00/-7:00 - America/Vancouver"], | |
| ["Pacific/Pitcairn", "-8:00 - Pacific/Pitcairn"], | |
| ["America/Boise", "-7:00/-6:00 - America/Boise"], | |
| ["America/Cambridge_Bay", "-7:00/-6:00 - America/Cambridge_Bay"], | |
| ["America/Chihuahua", "-7:00/-6:00 - America/Chihuahua"], | |
| ["America/Denver", "-7:00/-6:00 - America/Denver"], | |
| ["America/Edmonton", "-7:00/-6:00 - America/Edmonton"], | |
| ["America/Hermosillo", "-7:00/-6:00 - America/Hermosillo"], | |
| ["America/Inuvik", "-7:00/-6:00 - America/Inuvik"], | |
| ["America/Mazatlan", "-7:00/-6:00 - America/Mazatlan"], | |
| ["America/Ojinaga", "-7:00/-6:00 - America/Ojinaga"], | |
| ["America/Phoenix", "-7:00/-6:00 - America/Phoenix"], | |
| ["America/Yellowknife", "-7:00/-6:00 - America/Yellowknife"], | |
| ["America/Creston", "-7:00 - America/Creston"], | |
| ["America/Dawson", "-7:00 - America/Dawson"], | |
| ["America/Dawson_Creek", "-7:00 - America/Dawson_Creek"], | |
| ["America/Fort_Nelson", "-7:00 - America/Fort_Nelson"], | |
| ["America/Whitehorse", "-7:00 - America/Whitehorse"], | |
| ["America/Bahia_Banderas", "-6:00/-5:00 - America/Bahia_Banderas"], | |
| ["America/Belize", "-6:00/-5:00 - America/Belize"], | |
| ["America/Chicago", "-6:00/-5:00 - America/Chicago"], | |
| ["America/Costa_Rica", "-6:00/-5:00 - America/Costa_Rica"], | |
| ["America/El_Salvador", "-6:00/-5:00 - America/El_Salvador"], | |
| ["America/Guatemala", "-6:00/-5:00 - America/Guatemala"], | |
| ["America/Indiana/Knox", "-6:00/-5:00 - America/Indiana/Knox"], | |
| ["America/Indiana/Tell_City", "-6:00/-5:00 - America/Indiana/Tell_City"], | |
| ["America/Managua", "-6:00/-5:00 - America/Managua"], | |
| ["America/Matamoros", "-6:00/-5:00 - America/Matamoros"], | |
| ["America/Menominee", "-6:00/-5:00 - America/Menominee"], | |
| ["America/Merida", "-6:00/-5:00 - America/Merida"], | |
| ["America/Mexico_City", "-6:00/-5:00 - America/Mexico_City"], | |
| ["America/Monterrey", "-6:00/-5:00 - America/Monterrey"], | |
| ["America/North_Dakota/Beulah", "-6:00/-5:00 - America/North_Dakota/Beulah"], | |
| ["America/North_Dakota/Center", "-6:00/-5:00 - America/North_Dakota/Center"], | |
| ["America/North_Dakota/New_Salem", "-6:00/-5:00 - America/North_Dakota/New_Salem"], | |
| ["America/Rainy_River", "-6:00/-5:00 - America/Rainy_River"], | |
| ["America/Rankin_Inlet", "-6:00/-5:00 - America/Rankin_Inlet"], | |
| ["America/Resolute", "-6:00/-5:00 - America/Resolute"], | |
| ["America/Tegucigalpa", "-6:00/-5:00 - America/Tegucigalpa"], | |
| ["America/Winnipeg", "-6:00/-5:00 - America/Winnipeg"], | |
| ["Pacific/Easter", "-6:00/-5:00 - Pacific/Easter"], | |
| ["Pacific/Galapagos", "-6:00/-5:00 - Pacific/Galapagos"], | |
| ["America/Regina", "-6:00 - America/Regina"], | |
| ["America/Swift_Current", "-6:00 - America/Swift_Current"], | |
| ["America/Atikokan", "-5:00 - America/Atikokan"], | |
| ["America/Cancun", "-5:00 - America/Cancun"], | |
| ["America/Cayman", "-5:00 - America/Cayman"], | |
| ["America/Panama", "-5:00 - America/Panama"], | |
| ["America/Bogota", "-5:00/-4:00 - America/Bogota"], | |
| ["America/Detroit", "-5:00/-4:00 - America/Detroit"], | |
| ["America/Eirunepe", "-5:00/-4:00 - America/Eirunepe"], | |
| ["America/Grand_Turk", "-5:00/-4:00 - America/Grand_Turk"], | |
| ["America/Guayaquil", "-5:00/-4:00 - America/Guayaquil"], | |
| ["America/Havana", "-5:00/-4:00 - America/Havana"], | |
| ["America/Indiana/Indianapolis", "-5:00/-4:00 - America/Indiana/Indianapolis"], | |
| ["America/Indiana/Marengo", "-5:00/-4:00 - America/Indiana/Marengo"], | |
| ["America/Indiana/Petersburg", "-5:00/-4:00 - America/Indiana/Petersburg"], | |
| ["America/Indiana/Vevay", "-5:00/-4:00 - America/Indiana/Vevay"], | |
| ["America/Indiana/Vincennes", "-5:00/-4:00 - America/Indiana/Vincennes"], | |
| ["America/Indiana/Winamac", "-5:00/-4:00 - America/Indiana/Winamac"], | |
| ["America/Iqaluit", "-5:00/-4:00 - America/Iqaluit"], | |
| ["America/Jamaica", "-5:00/-4:00 - America/Jamaica"], | |
| ["America/Kentucky/Louisville", "-5:00/-4:00 - America/Kentucky/Louisville"], | |
| ["America/Kentucky/Monticello", "-5:00/-4:00 - America/Kentucky/Monticello"], | |
| ["America/Lima", "-5:00/-4:00 - America/Lima"], | |
| ["America/Nassau", "-5:00/-4:00 - America/Nassau"], | |
| ["America/New_York", "-5:00/-4:00 - America/New_York"], | |
| ["America/Nipigon", "-5:00/-4:00 - America/Nipigon"], | |
| ["America/Pangnirtung", "-5:00/-4:00 - America/Pangnirtung"], | |
| ["America/Port-au-Prince", "-5:00/-4:00 - America/Port-au-Prince"], | |
| ["America/Rio_Branco", "-5:00/-4:00 - America/Rio_Branco"], | |
| ["America/Thunder_Bay", "-5:00/-4:00 - America/Thunder_Bay"], | |
| ["America/Toronto", "-5:00/-4:00 - America/Toronto"], | |
| ["America/Anguilla", "-4:00 - America/Anguilla"], | |
| ["America/Antigua", "-4:00 - America/Antigua"], | |
| ["America/Aruba", "-4:00 - America/Aruba"], | |
| ["America/Caracas", "-4:00 - America/Caracas"], | |
| ["America/Curacao", "-4:00 - America/Curacao"], | |
| ["America/Dominica", "-4:00 - America/Dominica"], | |
| ["America/Grenada", "-4:00 - America/Grenada"], | |
| ["America/Guadeloupe", "-4:00 - America/Guadeloupe"], | |
| ["America/Guyana", "-4:00 - America/Guyana"], | |
| ["America/Kralendijk", "-4:00 - America/Kralendijk"], | |
| ["America/Lower_Princes", "-4:00 - America/Lower_Princes"], | |
| ["America/Marigot", "-4:00 - America/Marigot"], | |
| ["America/Montserrat", "-4:00 - America/Montserrat"], | |
| ["America/Port_of_Spain", "-4:00 - America/Port_of_Spain"], | |
| ["America/St_Barthelemy", "-4:00 - America/St_Barthelemy"], | |
| ["America/St_Kitts", "-4:00 - America/St_Kitts"], | |
| ["America/St_Lucia", "-4:00 - America/St_Lucia"], | |
| ["America/St_Thomas", "-4:00 - America/St_Thomas"], | |
| ["America/St_Vincent", "-4:00 - America/St_Vincent"], | |
| ["America/Tortola", "-4:00 - America/Tortola"], | |
| ["America/Asuncion", "-4:00/-3:00 - America/Asuncion"], | |
| ["America/Barbados", "-4:00/-3:00 - America/Barbados"], | |
| ["America/Blanc-Sablon", "-4:00/-3:00 - America/Blanc-Sablon"], | |
| ["America/Boa_Vista", "-4:00/-3:00 - America/Boa_Vista"], | |
| ["America/Campo_Grande", "-4:00/-3:00 - America/Campo_Grande"], | |
| ["America/Cuiaba", "-4:00/-3:00 - America/Cuiaba"], | |
| ["America/Glace_Bay", "-4:00/-3:00 - America/Glace_Bay"], | |
| ["America/Goose_Bay", "-4:00/-3:00 - America/Goose_Bay"], | |
| ["America/Halifax", "-4:00/-3:00 - America/Halifax"], | |
| ["America/Manaus", "-4:00/-3:00 - America/Manaus"], | |
| ["America/Martinique", "-4:00/-3:00 - America/Martinique"], | |
| ["America/Moncton", "-4:00/-3:00 - America/Moncton"], | |
| ["America/Porto_Velho", "-4:00/-3:00 - America/Porto_Velho"], | |
| ["America/Puerto_Rico", "-4:00/-3:00 - America/Puerto_Rico"], | |
| ["America/Santiago", "-4:00/-3:00 - America/Santiago"], | |
| ["America/Thule", "-4:00/-3:00 - America/Thule"], | |
| ["Atlantic/Bermuda", "-4:00/-3:00 - Atlantic/Bermuda"], | |
| ["America/La_Paz", "-4:00/-3:32 - America/La_Paz"], | |
| ["America/Santo_Domingo", "-4:00/-4:30 - America/Santo_Domingo"], | |
| ["America/St_Johns", "-3:30/-2:30 - America/St_Johns"], | |
| ["America/Araguaina", "-3:00/-2:00 - America/Araguaina"], | |
| ["America/Argentina/Buenos_Aires", "-3:00/-2:00 - America/Argentina/Buenos_Aires"], | |
| ["America/Argentina/Catamarca", "-3:00/-2:00 - America/Argentina/Catamarca"], | |
| ["America/Argentina/Cordoba", "-3:00/-2:00 - America/Argentina/Cordoba"], | |
| ["America/Argentina/Jujuy", "-3:00/-2:00 - America/Argentina/Jujuy"], | |
| ["America/Argentina/La_Rioja", "-3:00/-2:00 - America/Argentina/La_Rioja"], | |
| ["America/Argentina/Mendoza", "-3:00/-2:00 - America/Argentina/Mendoza"], | |
| ["America/Argentina/Rio_Gallegos", "-3:00/-2:00 - America/Argentina/Rio_Gallegos"], | |
| ["America/Argentina/Salta", "-3:00/-2:00 - America/Argentina/Salta"], | |
| ["America/Argentina/San_Juan", "-3:00/-2:00 - America/Argentina/San_Juan"], | |
| ["America/Argentina/Tucuman", "-3:00/-2:00 - America/Argentina/Tucuman"], | |
| ["America/Argentina/Ushuaia", "-3:00/-2:00 - America/Argentina/Ushuaia"], | |
| ["America/Bahia", "-3:00/-2:00 - America/Bahia"], | |
| ["America/Belem", "-3:00/-2:00 - America/Belem"], | |
| ["America/Fortaleza", "-3:00/-2:00 - America/Fortaleza"], | |
| ["America/Maceio", "-3:00/-2:00 - America/Maceio"], | |
| ["America/Miquelon", "-3:00/-2:00 - America/Miquelon"], | |
| ["America/Montevideo", "-3:00/-2:00 - America/Montevideo"], | |
| ["America/Nuuk", "-3:00/-2:00 - America/Nuuk"], | |
| ["America/Recife", "-3:00/-2:00 - America/Recife"], | |
| ["America/Sao_Paulo", "-3:00/-2:00 - America/Sao_Paulo"], | |
| ["America/Argentina/San_Luis", "-3:00 - America/Argentina/San_Luis"], | |
| ["America/Cayenne", "-3:00 - America/Cayenne"], | |
| ["America/Paramaribo", "-3:00 - America/Paramaribo"], | |
| ["America/Punta_Arenas", "-3:00 - America/Punta_Arenas"], | |
| ["America/Santarem", "-3:00 - America/Santarem"], | |
| ["Antarctica/Palmer", "-3:00 - Antarctica/Palmer"], | |
| ["Antarctica/Rothera", "-3:00 - Antarctica/Rothera"], | |
| ["Atlantic/Stanley", "-3:00 - Atlantic/Stanley"], | |
| ["America/Noronha", "-2:00/-1:00 - America/Noronha"], | |
| ["Atlantic/South_Georgia", "-2:00 - Atlantic/South_Georgia"], | |
| ["America/Scoresbysund", "-1:00/+0:00 - America/Scoresbysund"], | |
| ["Atlantic/Azores", "-1:00/+0:00 - Atlantic/Azores"], | |
| ["Atlantic/Cape_Verde", "-1:00 - Atlantic/Cape_Verde"], | |
| ["Africa/Abidjan", "+0:00 - Africa/Abidjan"], | |
| ["Africa/Bamako", "+0:00 - Africa/Bamako"], | |
| ["Africa/Banjul", "+0:00 - Africa/Banjul"], | |
| ["Africa/Bissau", "+0:00 - Africa/Bissau"], | |
| ["Africa/Conakry", "+0:00 - Africa/Conakry"], | |
| ["Africa/Dakar", "+0:00 - Africa/Dakar"], | |
| ["Africa/Freetown", "+0:00 - Africa/Freetown"], | |
| ["Africa/Lome", "+0:00 - Africa/Lome"], | |
| ["Africa/Monrovia", "+0:00 - Africa/Monrovia"], | |
| ["Africa/Nouakchott", "+0:00 - Africa/Nouakchott"], | |
| ["Africa/Ouagadougou", "+0:00 - Africa/Ouagadougou"], | |
| ["Africa/Sao_Tome", "+0:00 - Africa/Sao_Tome"], | |
| ["Atlantic/Reykjavik", "+0:00 - Atlantic/Reykjavik"], | |
| ["Atlantic/St_Helena", "+0:00 - Atlantic/St_Helena"], | |
| ["Africa/Accra", "+0:00/+0:30 - Africa/Accra"], | |
| ["America/Danmarkshavn", "+0:00/-2:00 - America/Danmarkshavn"], | |
| ["Antarctica/Troll", "+0:00/+2:00 - Antarctica/Troll"], | |
| ["Atlantic/Canary", "+0:00/+1:00 - Atlantic/Canary"], | |
| ["Atlantic/Faroe", "+0:00/+1:00 - Atlantic/Faroe"], | |
| ["Atlantic/Madeira", "+0:00/+1:00 - Atlantic/Madeira"], | |
| ["Europe/Guernsey", "+0:00/+1:00 - Europe/Guernsey"], | |
| ["Europe/Isle_of_Man", "+0:00/+1:00 - Europe/Isle_of_Man"], | |
| ["Europe/Jersey", "+0:00/+1:00 - Europe/Jersey"], | |
| ["Europe/Lisbon", "+0:00/+1:00 - Europe/Lisbon"], | |
| ["Europe/London", "+0:00/+1:00 - Europe/London"], | |
| ["Africa/Algiers", "+1:00 - Africa/Algiers"], | |
| ["Africa/Bangui", "+1:00 - Africa/Bangui"], | |
| ["Africa/Brazzaville", "+1:00 - Africa/Brazzaville"], | |
| ["Africa/Douala", "+1:00 - Africa/Douala"], | |
| ["Africa/Kinshasa", "+1:00 - Africa/Kinshasa"], | |
| ["Africa/Lagos", "+1:00 - Africa/Lagos"], | |
| ["Africa/Libreville", "+1:00 - Africa/Libreville"], | |
| ["Africa/Luanda", "+1:00 - Africa/Luanda"], | |
| ["Africa/Malabo", "+1:00 - Africa/Malabo"], | |
| ["Africa/Niamey", "+1:00 - Africa/Niamey"], | |
| ["Africa/Porto-Novo", "+1:00 - Africa/Porto-Novo"], | |
| ["Africa/Casablanca", "+1:00/+0:00 - Africa/Casablanca"], | |
| ["Africa/El_Aaiun", "+1:00/+0:00 - Africa/El_Aaiun"], | |
| ["Europe/Dublin", "+1:00/+0:00 - Europe/Dublin"], | |
| ["Africa/Ceuta", "+1:00/+2:00 - Africa/Ceuta"], | |
| ["Africa/Ndjamena", "+1:00/+2:00 - Africa/Ndjamena"], | |
| ["Africa/Tunis", "+1:00/+2:00 - Africa/Tunis"], | |
| ["Arctic/Longyearbyen", "+1:00/+2:00 - Arctic/Longyearbyen"], | |
| ["Europe/Amsterdam", "+1:00/+2:00 - Europe/Amsterdam"], | |
| ["Europe/Andorra", "+1:00/+2:00 - Europe/Andorra"], | |
| ["Europe/Belgrade", "+1:00/+2:00 - Europe/Belgrade"], | |
| ["Europe/Berlin", "+1:00/+2:00 - Europe/Berlin"], | |
| ["Europe/Bratislava", "+1:00/+2:00 - Europe/Bratislava"], | |
| ["Europe/Brussels", "+1:00/+2:00 - Europe/Brussels"], | |
| ["Europe/Budapest", "+1:00/+2:00 - Europe/Budapest"], | |
| ["Europe/Busingen", "+1:00/+2:00 - Europe/Busingen"], | |
| ["Europe/Copenhagen", "+1:00/+2:00 - Europe/Copenhagen"], | |
| ["Europe/Gibraltar", "+1:00/+2:00 - Europe/Gibraltar"], | |
| ["Europe/Ljubljana", "+1:00/+2:00 - Europe/Ljubljana"], | |
| ["Europe/Luxembourg", "+1:00/+2:00 - Europe/Luxembourg"], | |
| ["Europe/Madrid", "+1:00/+2:00 - Europe/Madrid"], | |
| ["Europe/Malta", "+1:00/+2:00 - Europe/Malta"], | |
| ["Europe/Monaco", "+1:00/+2:00 - Europe/Monaco"], | |
| ["Europe/Oslo", "+1:00/+2:00 - Europe/Oslo"], | |
| ["Europe/Paris", "+1:00/+2:00 - Europe/Paris"], | |
| ["Europe/Podgorica", "+1:00/+2:00 - Europe/Podgorica"], | |
| ["Europe/Prague", "+1:00/+2:00 - Europe/Prague"], | |
| ["Europe/Rome", "+1:00/+2:00 - Europe/Rome"], | |
| ["Europe/San_Marino", "+1:00/+2:00 - Europe/San_Marino"], | |
| ["Europe/Sarajevo", "+1:00/+2:00 - Europe/Sarajevo"], | |
| ["Europe/Skopje", "+1:00/+2:00 - Europe/Skopje"], | |
| ["Europe/Stockholm", "+1:00/+2:00 - Europe/Stockholm"], | |
| ["Europe/Tirane", "+1:00/+2:00 - Europe/Tirane"], | |
| ["Europe/Vaduz", "+1:00/+2:00 - Europe/Vaduz"], | |
| ["Europe/Vatican", "+1:00/+2:00 - Europe/Vatican"], | |
| ["Europe/Vienna", "+1:00/+2:00 - Europe/Vienna"], | |
| ["Europe/Warsaw", "+1:00/+2:00 - Europe/Warsaw"], | |
| ["Europe/Zagreb", "+1:00/+2:00 - Europe/Zagreb"], | |
| ["Europe/Zurich", "+1:00/+2:00 - Europe/Zurich"], | |
| ["Africa/Blantyre", "+2:00 - Africa/Blantyre"], | |
| ["Africa/Bujumbura", "+2:00 - Africa/Bujumbura"], | |
| ["Africa/Gaborone", "+2:00 - Africa/Gaborone"], | |
| ["Africa/Harare", "+2:00 - Africa/Harare"], | |
| ["Africa/Kigali", "+2:00 - Africa/Kigali"], | |
| ["Africa/Lubumbashi", "+2:00 - Africa/Lubumbashi"], | |
| ["Africa/Lusaka", "+2:00 - Africa/Lusaka"], | |
| ["Africa/Maputo", "+2:00 - Africa/Maputo"], | |
| ["Africa/Tripoli", "+2:00 - Africa/Tripoli"], | |
| ["Africa/Cairo", "+2:00/+3:00 - Africa/Cairo"], | |
| ["Africa/Johannesburg", "+2:00/+3:00 - Africa/Johannesburg"], | |
| ["Africa/Juba", "+2:00/+3:00 - Africa/Juba"], | |
| ["Africa/Khartoum", "+2:00/+3:00 - Africa/Khartoum"], | |
| ["Africa/Maseru", "+2:00/+3:00 - Africa/Maseru"], | |
| ["Africa/Mbabane", "+2:00/+3:00 - Africa/Mbabane"], | |
| ["Asia/Amman", "+2:00/+3:00 - Asia/Amman"], | |
| ["Asia/Beirut", "+2:00/+3:00 - Asia/Beirut"], | |
| ["Asia/Damascus", "+2:00/+3:00 - Asia/Damascus"], | |
| ["Asia/Famagusta", "+2:00/+3:00 - Asia/Famagusta"], | |
| ["Asia/Gaza", "+2:00/+3:00 - Asia/Gaza"], | |
| ["Asia/Hebron", "+2:00/+3:00 - Asia/Hebron"], | |
| ["Asia/Jerusalem", "+2:00/+3:00 - Asia/Jerusalem"], | |
| ["Asia/Nicosia", "+2:00/+3:00 - Asia/Nicosia"], | |
| ["Europe/Athens", "+2:00/+3:00 - Europe/Athens"], | |
| ["Europe/Bucharest", "+2:00/+3:00 - Europe/Bucharest"], | |
| ["Europe/Chisinau", "+2:00/+3:00 - Europe/Chisinau"], | |
| ["Europe/Helsinki", "+2:00/+3:00 - Europe/Helsinki"], | |
| ["Europe/Kaliningrad", "+2:00/+3:00 - Europe/Kaliningrad"], | |
| ["Europe/Kiev", "+2:00/+3:00 - Europe/Kiev"], | |
| ["Europe/Mariehamn", "+2:00/+3:00 - Europe/Mariehamn"], | |
| ["Europe/Riga", "+2:00/+3:00 - Europe/Riga"], | |
| ["Europe/Sofia", "+2:00/+3:00 - Europe/Sofia"], | |
| ["Europe/Tallinn", "+2:00/+3:00 - Europe/Tallinn"], | |
| ["Europe/Uzhgorod", "+2:00/+3:00 - Europe/Uzhgorod"], | |
| ["Europe/Vilnius", "+2:00/+3:00 - Europe/Vilnius"], | |
| ["Europe/Zaporozhye", "+2:00/+3:00 - Europe/Zaporozhye"], | |
| ["Africa/Windhoek", "+2:00/+1:00 - Africa/Windhoek"], | |
| ["Africa/Addis_Ababa", "+3:00 - Africa/Addis_Ababa"], | |
| ["Africa/Asmara", "+3:00 - Africa/Asmara"], | |
| ["Africa/Dar_es_Salaam", "+3:00 - Africa/Dar_es_Salaam"], | |
| ["Africa/Djibouti", "+3:00 - Africa/Djibouti"], | |
| ["Africa/Kampala", "+3:00 - Africa/Kampala"], | |
| ["Africa/Mogadishu", "+3:00 - Africa/Mogadishu"], | |
| ["Africa/Nairobi", "+3:00 - Africa/Nairobi"], | |
| ["Antarctica/Syowa", "+3:00 - Antarctica/Syowa"], | |
| ["Asia/Aden", "+3:00 - Asia/Aden"], | |
| ["Asia/Bahrain", "+3:00 - Asia/Bahrain"], | |
| ["Asia/Kuwait", "+3:00 - Asia/Kuwait"], | |
| ["Asia/Qatar", "+3:00 - Asia/Qatar"], | |
| ["Asia/Riyadh", "+3:00 - Asia/Riyadh"], | |
| ["Europe/Istanbul", "+3:00 - Europe/Istanbul"], | |
| ["Europe/Minsk", "+3:00 - Europe/Minsk"], | |
| ["Europe/Simferopol", "+3:00 - Europe/Simferopol"], | |
| ["Indian/Antananarivo", "+3:00 - Indian/Antananarivo"], | |
| ["Indian/Comoro", "+3:00 - Indian/Comoro"], | |
| ["Indian/Mayotte", "+3:00 - Indian/Mayotte"], | |
| ["Asia/Baghdad", "+3:00/+4:00 - Asia/Baghdad"], | |
| ["Europe/Kirov", "+3:00/+4:00 - Europe/Kirov"], | |
| ["Europe/Moscow", "+3:00/+4:00 - Europe/Moscow"], | |
| ["Europe/Volgograd", "+3:00/+4:00 - Europe/Volgograd"], | |
| ["Asia/Tehran", "+3:30/+4:30 - Asia/Tehran"], | |
| ["Asia/Baku", "+4:00/+5:00 - Asia/Baku"], | |
| ["Asia/Yerevan", "+4:00/+5:00 - Asia/Yerevan"], | |
| ["Indian/Mauritius", "+4:00/+5:00 - Indian/Mauritius"], | |
| ["Asia/Dubai", "+4:00 - Asia/Dubai"], | |
| ["Asia/Muscat", "+4:00 - Asia/Muscat"], | |
| ["Asia/Tbilisi", "+4:00 - Asia/Tbilisi"], | |
| ["Europe/Astrakhan", "+4:00 - Europe/Astrakhan"], | |
| ["Europe/Samara", "+4:00 - Europe/Samara"], | |
| ["Europe/Saratov", "+4:00 - Europe/Saratov"], | |
| ["Europe/Ulyanovsk", "+4:00 - Europe/Ulyanovsk"], | |
| ["Indian/Mahe", "+4:00 - Indian/Mahe"], | |
| ["Indian/Reunion", "+4:00 - Indian/Reunion"], | |
| ["Asia/Kabul", "+4:30 - Asia/Kabul"], | |
| ["Antarctica/Mawson", "+5:00 - Antarctica/Mawson"], | |
| ["Asia/Aqtau", "+5:00 - Asia/Aqtau"], | |
| ["Asia/Ashgabat", "+5:00 - Asia/Ashgabat"], | |
| ["Asia/Atyrau", "+5:00 - Asia/Atyrau"], | |
| ["Asia/Oral", "+5:00 - Asia/Oral"], | |
| ["Indian/Kerguelen", "+5:00 - Indian/Kerguelen"], | |
| ["Indian/Maldives", "+5:00 - Indian/Maldives"], | |
| ["Asia/Aqtobe", "+5:00/+6:00 - Asia/Aqtobe"], | |
| ["Asia/Dushanbe", "+5:00/+6:00 - Asia/Dushanbe"], | |
| ["Asia/Karachi", "+5:00/+6:00 - Asia/Karachi"], | |
| ["Asia/Qyzylorda", "+5:00/+6:00 - Asia/Qyzylorda"], | |
| ["Asia/Samarkand", "+5:00/+6:00 - Asia/Samarkand"], | |
| ["Asia/Tashkent", "+5:00/+6:00 - Asia/Tashkent"], | |
| ["Asia/Yekaterinburg", "+5:00/+6:00 - Asia/Yekaterinburg"], | |
| ["Asia/Colombo", "+5:30/+6:30 - Asia/Colombo"], | |
| ["Asia/Kolkata", "+5:30/+6:30 - Asia/Kolkata"], | |
| ["Asia/Kathmandu", "+5:45 - Asia/Kathmandu"], | |
| ["Antarctica/Vostok", "+6:00 - Antarctica/Vostok"], | |
| ["Asia/Bishkek", "+6:00 - Asia/Bishkek"], | |
| ["Asia/Qostanay", "+6:00 - Asia/Qostanay"], | |
| ["Asia/Thimphu", "+6:00 - Asia/Thimphu"], | |
| ["Asia/Urumqi", "+6:00 - Asia/Urumqi"], | |
| ["Indian/Chagos", "+6:00 - Indian/Chagos"], | |
| ["Asia/Almaty", "+6:00/+7:00 - Asia/Almaty"], | |
| ["Asia/Dhaka", "+6:00/+7:00 - Asia/Dhaka"], | |
| ["Asia/Omsk", "+6:00/+7:00 - Asia/Omsk"], | |
| ["Asia/Yangon", "+6:30 - Asia/Yangon"], | |
| ["Indian/Cocos", "+6:30 - Indian/Cocos"], | |
| ["Antarctica/Davis", "+7:00 - Antarctica/Davis"], | |
| ["Asia/Bangkok", "+7:00 - Asia/Bangkok"], | |
| ["Asia/Barnaul", "+7:00 - Asia/Barnaul"], | |
| ["Asia/Ho_Chi_Minh", "+7:00 - Asia/Ho_Chi_Minh"], | |
| ["Asia/Jakarta", "+7:00 - Asia/Jakarta"], | |
| ["Asia/Novokuznetsk", "+7:00 - Asia/Novokuznetsk"], | |
| ["Asia/Novosibirsk", "+7:00 - Asia/Novosibirsk"], | |
| ["Asia/Phnom_Penh", "+7:00 - Asia/Phnom_Penh"], | |
| ["Asia/Pontianak", "+7:00 - Asia/Pontianak"], | |
| ["Asia/Tomsk", "+7:00 - Asia/Tomsk"], | |
| ["Asia/Vientiane", "+7:00 - Asia/Vientiane"], | |
| ["Indian/Christmas", "+7:00 - Indian/Christmas"], | |
| ["Asia/Hovd", "+7:00/+8:00 - Asia/Hovd"], | |
| ["Asia/Krasnoyarsk", "+7:00/+8:00 - Asia/Krasnoyarsk"], | |
| ["Asia/Brunei", "+8:00 - Asia/Brunei"], | |
| ["Asia/Makassar", "+8:00 - Asia/Makassar"], | |
| ["Asia/Choibalsan", "+8:00/+9:00 - Asia/Choibalsan"], | |
| ["Asia/Hong_Kong", "+8:00/+9:00 - Asia/Hong_Kong"], | |
| ["Asia/Irkutsk", "+8:00/+9:00 - Asia/Irkutsk"], | |
| ["Asia/Macau", "+8:00/+9:00 - Asia/Macau"], | |
| ["Asia/Manila", "+8:00/+9:00 - Asia/Manila"], | |
| ["Asia/Shanghai", "+8:00/+9:00 - Asia/Shanghai"], | |
| ["Asia/Taipei", "+8:00/+9:00 - Asia/Taipei"], | |
| ["Asia/Ulaanbaatar", "+8:00/+9:00 - Asia/Ulaanbaatar"], | |
| ["Australia/Perth", "+8:00/+9:00 - Australia/Perth"], | |
| ["Asia/Kuala_Lumpur", "+8:00/+7:20 - Asia/Kuala_Lumpur"], | |
| ["Asia/Singapore", "+8:00/+7:20 - Asia/Singapore"], | |
| ["Asia/Kuching", "+8:00/+8:20 - Asia/Kuching"], | |
| ["Australia/Eucla", "+8:45/+9:45 - Australia/Eucla"], | |
| ["Asia/Chita", "+9:00/+10:00 - Asia/Chita"], | |
| ["Asia/Seoul", "+9:00/+10:00 - Asia/Seoul"], | |
| ["Asia/Tokyo", "+9:00/+10:00 - Asia/Tokyo"], | |
| ["Asia/Yakutsk", "+9:00/+10:00 - Asia/Yakutsk"], | |
| ["Asia/Dili", "+9:00 - Asia/Dili"], | |
| ["Asia/Jayapura", "+9:00 - Asia/Jayapura"], | |
| ["Asia/Pyongyang", "+9:00 - Asia/Pyongyang"], | |
| ["Pacific/Palau", "+9:00 - Pacific/Palau"], | |
| ["Asia/Khandyga", "+9:00/+11:00 - Asia/Khandyga"], | |
| ["Australia/Adelaide", "+9:30/+10:30 - Australia/Adelaide"], | |
| ["Australia/Broken_Hill", "+9:30/+10:30 - Australia/Broken_Hill"], | |
| ["Australia/Darwin", "+9:30/+10:30 - Australia/Darwin"], | |
| ["Antarctica/DumontDUrville", "+10:00 - Antarctica/DumontDUrville"], | |
| ["Pacific/Chuuk", "+10:00 - Pacific/Chuuk"], | |
| ["Pacific/Port_Moresby", "+10:00 - Pacific/Port_Moresby"], | |
| ["Antarctica/Macquarie", "+10:00/+11:00 - Antarctica/Macquarie"], | |
| ["Asia/Vladivostok", "+10:00/+11:00 - Asia/Vladivostok"], | |
| ["Australia/Brisbane", "+10:00/+11:00 - Australia/Brisbane"], | |
| ["Australia/Currie", "+10:00/+11:00 - Australia/Currie"], | |
| ["Australia/Hobart", "+10:00/+11:00 - Australia/Hobart"], | |
| ["Australia/Lindeman", "+10:00/+11:00 - Australia/Lindeman"], | |
| ["Australia/Melbourne", "+10:00/+11:00 - Australia/Melbourne"], | |
| ["Australia/Sydney", "+10:00/+11:00 - Australia/Sydney"], | |
| ["Pacific/Guam", "+10:00/+11:00 - Pacific/Guam"], | |
| ["Pacific/Saipan", "+10:00/+11:00 - Pacific/Saipan"], | |
| ["Asia/Ust-Nera", "+10:00/+12:00 - Asia/Ust-Nera"], | |
| ["Australia/Lord_Howe", "+10:30/+11:00 - Australia/Lord_Howe"], | |
| ["Antarctica/Casey", "+11:00 - Antarctica/Casey"], | |
| ["Asia/Sakhalin", "+11:00 - Asia/Sakhalin"], | |
| ["Pacific/Bougainville", "+11:00 - Pacific/Bougainville"], | |
| ["Pacific/Guadalcanal", "+11:00 - Pacific/Guadalcanal"], | |
| ["Pacific/Kosrae", "+11:00 - Pacific/Kosrae"], | |
| ["Pacific/Pohnpei", "+11:00 - Pacific/Pohnpei"], | |
| ["Asia/Magadan", "+11:00/+12:00 - Asia/Magadan"], | |
| ["Asia/Srednekolymsk", "+11:00/+12:00 - Asia/Srednekolymsk"], | |
| ["Pacific/Efate", "+11:00/+12:00 - Pacific/Efate"], | |
| ["Pacific/Norfolk", "+11:00/+12:00 - Pacific/Norfolk"], | |
| ["Pacific/Noumea", "+11:00/+12:00 - Pacific/Noumea"], | |
| ["Antarctica/McMurdo", "+12:00/+13:00 - Antarctica/McMurdo"], | |
| ["Pacific/Auckland", "+12:00/+13:00 - Pacific/Auckland"], | |
| ["Pacific/Fiji", "+12:00/+13:00 - Pacific/Fiji"], | |
| ["Asia/Anadyr", "+12:00 - Asia/Anadyr"], | |
| ["Asia/Kamchatka", "+12:00 - Asia/Kamchatka"], | |
| ["Pacific/Funafuti", "+12:00 - Pacific/Funafuti"], | |
| ["Pacific/Kwajalein", "+12:00 - Pacific/Kwajalein"], | |
| ["Pacific/Majuro", "+12:00 - Pacific/Majuro"], | |
| ["Pacific/Nauru", "+12:00 - Pacific/Nauru"], | |
| ["Pacific/Tarawa", "+12:00 - Pacific/Tarawa"], | |
| ["Pacific/Wake", "+12:00 - Pacific/Wake"], | |
| ["Pacific/Wallis", "+12:00 - Pacific/Wallis"], | |
| ["Pacific/Chatham", "+12:45/+13:45 - Pacific/Chatham"], | |
| ["Pacific/Apia", "+13:00/+14:00 - Pacific/Apia"], | |
| ["Pacific/Tongatapu", "+13:00/+14:00 - Pacific/Tongatapu"], | |
| ["Pacific/Enderbury", "+13:00 - Pacific/Enderbury"], | |
| ["Pacific/Fakaofo", "+13:00 - Pacific/Fakaofo"], | |
| ["Pacific/Kiritimati", "+14:00 - Pacific/Kiritimati"]] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment