From 7b617082c60f689c719f4b8d89a361e47498f8d3 Mon Sep 17 00:00:00 2001 From: Bronwyn Skelley Date: Tue, 4 Jun 2024 18:21:48 +0000 Subject: [PATCH] iana timezones to rails timezones mapper --- CHANGELOG.md | 1 + db/data/iana_to_rails_time_zone.yml | 615 +++++++++++++++++ lib/worldwide/deprecated_time_zone_mapper.rb | 10 + .../deprecated_time_zone_mapper_test.rb | 620 ++++++++++++++++++ 4 files changed, 1246 insertions(+) create mode 100644 db/data/iana_to_rails_time_zone.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 31f979b00..e2bb3e822 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Merge duplicate language definition on some region yaml files to restore missing languages; `NO` adds "en" and "nb", `SA` adds "en", SG does not change [#188](https://github.com/Shopify/worldwide/pull/188) - updated format_extended for TW VN [#187]https://github.com/Shopify/worldwide/pull/187) +- Add IANA timezone to rails timezone mappings [#194](https://github.com/Shopify/worldwide/pull/194) --- diff --git a/db/data/iana_to_rails_time_zone.yml b/db/data/iana_to_rails_time_zone.yml new file mode 100644 index 000000000..0671ed6ea --- /dev/null +++ b/db/data/iana_to_rails_time_zone.yml @@ -0,0 +1,615 @@ +# There isn't a proper mapping for some zones, as they don't have a good match in Rails, but these are the least bad options. + +Africa/Abidjan: Africa/Monrovia +Africa/Accra: Africa/Monrovia +Africa/Addis_Ababa: Africa/Nairobi +Africa/Algiers: Africa/Algiers +Africa/Asmara: Africa/Nairobi +Africa/Asmera: Africa/Nairobi +Africa/Bamako: Africa/Monrovia +Africa/Bangui: Africa/Algiers +Africa/Banjul: Africa/Monrovia +Africa/Bissau: Africa/Monrovia +Africa/Blantyre: Africa/Harare +Africa/Brazzaville: Africa/Algiers +Africa/Bujumbura: Africa/Harare +Africa/Cairo: Africa/Cairo +Africa/Casablanca: Africa/Casablanca +Africa/Ceuta: Europe/Madrid +Africa/Conakry: Africa/Monrovia +Africa/Dakar: Africa/Monrovia +Africa/Dar_es_Salaam: Africa/Nairobi +Africa/Djibouti: Africa/Nairobi +Africa/Douala: Africa/Algiers +Africa/El_Aaiun: Africa/Casablanca +Africa/Freetown: Africa/Monrovia +Africa/Gaborone: Africa/Harare +Africa/Harare: Africa/Harare +Africa/Johannesburg: Africa/Johannesburg +Africa/Juba: Africa/Harare +Africa/Kampala: Africa/Nairobi +Africa/Khartoum: Africa/Harare +Africa/Kigali: Africa/Harare +Africa/Kinshasa: Africa/Algiers +Africa/Lagos: Africa/Algiers +Africa/Libreville: Africa/Algiers +Africa/Lome: Africa/Monrovia +Africa/Luanda: Africa/Algiers +Africa/Lubumbashi: Africa/Harare +Africa/Lusaka: Africa/Harare +Africa/Malabo: Africa/Algiers +Africa/Maputo: Africa/Harare +Africa/Maseru: Africa/Johannesburg +Africa/Mbabane: Africa/Johannesburg +Africa/Mogadishu: Africa/Nairobi +Africa/Monrovia: Africa/Monrovia +Africa/Nairobi: Africa/Nairobi +Africa/Ndjamena: Africa/Algiers +Africa/Niamey: Africa/Algiers +Africa/Nouakchott: Africa/Monrovia +Africa/Ouagadougou: Africa/Monrovia +Africa/Porto-Novo: Africa/Algiers +Africa/Sao_Tome: Africa/Monrovia +Africa/Timbuktu: Africa/Monrovia +Africa/Tripoli: Africa/Harare +Africa/Tunis: Africa/Algiers +Africa/Windhoek: Africa/Harare +# America/Adak inexact match +America/Adak: Pacific/Honolulu +America/Anchorage: America/Juneau +America/Anguilla: America/Puerto_Rico +America/Antigua: America/Puerto_Rico +America/Araguaina: America/Sao_Paulo +America/Argentina/Buenos_Aires: America/Argentina/Buenos_Aires +America/Argentina/Catamarca: America/Argentina/Buenos_Aires +America/Argentina/ComodRivadavia: America/Argentina/Buenos_Aires +America/Argentina/Cordoba: America/Argentina/Buenos_Aires +America/Argentina/Jujuy: America/Argentina/Buenos_Aires +America/Argentina/La_Rioja: America/Argentina/Buenos_Aires +America/Argentina/Mendoza: America/Argentina/Buenos_Aires +America/Argentina/Rio_Gallegos: America/Argentina/Buenos_Aires +America/Argentina/Salta: America/Argentina/Buenos_Aires +America/Argentina/San_Juan: America/Argentina/Buenos_Aires +America/Argentina/San_Luis: America/Argentina/Buenos_Aires +America/Argentina/Tucuman: America/Argentina/Buenos_Aires +America/Argentina/Ushuaia: America/Argentina/Buenos_Aires +America/Aruba: America/Puerto_Rico +America/Asuncion: America/Halifax +America/Atikokan: America/Bogota +# America/Atka inexact match +America/Atka: Pacific/Honolulu +America/Bahia: America/Sao_Paulo +America/Bahia_Banderas: America/Mexico_City +America/Barbados: America/Puerto_Rico +America/Belem: America/Sao_Paulo +America/Belize: America/Mexico_City +America/Blanc-Sablon: America/Puerto_Rico +America/Boa_Vista: America/Caracas +America/Bogota: America/Bogota +America/Boise: America/Denver +America/Buenos_Aires: America/Argentina/Buenos_Aires +America/Cambridge_Bay: America/Denver +America/Campo_Grande: America/Caracas +America/Cancun: America/Bogota +America/Caracas: America/Caracas +America/Catamarca: America/Argentina/Buenos_Aires +America/Cayenne: America/Sao_Paulo +America/Cayman: America/Bogota +America/Chicago: America/Chicago +America/Chihuahua: America/Chihuahua +America/Ciudad_Juarez: America/Denver +America/Coral_Harbour: America/Bogota +America/Cordoba: America/Argentina/Buenos_Aires +America/Costa_Rica: America/Mexico_City +America/Creston: America/Phoenix +America/Cuiaba: America/Caracas +America/Curacao: America/Puerto_Rico +America/Danmarkshavn: Etc/Utc +America/Dawson: America/Phoenix +America/Dawson_Creek: America/Phoenix +America/Denver: America/Denver +America/Detroit: America/New_York +America/Dominica: America/Puerto_Rico +America/Edmonton: America/Denver +America/Eirunepe: America/Bogota +America/El_Salvador: America/Mexico_City +America/Ensenada: America/Los_Angeles +America/Fort_Nelson: America/Phoenix +America/Fort_Wayne: America/New_York +America/Fortaleza: America/Sao_Paulo +America/Glace_Bay: America/Halifax +America/Godthab: America/Godthab +America/Goose_Bay: America/Halifax +America/Grand_Turk: America/New_York +America/Grenada: America/Puerto_Rico +America/Guadeloupe: America/Puerto_Rico +America/Guatemala: America/Mexico_City +America/Guayaquil: America/Bogota +America/Guyana: America/Caracas +America/Halifax: America/Halifax +America/Havana: America/New_York +America/Hermosillo: America/Phoenix +America/Indiana/Indianapolis: America/Indiana/Indianapolis +America/Indiana/Knox: America/Chicago +America/Indiana/Marengo: America/Indiana/Indianapolis +America/Indiana/Petersburg: America/Indiana/Indianapolis +America/Indiana/Tell_City: America/Chicago +America/Indiana/Vevay: America/Indiana/Indianapolis +America/Indiana/Vincennes: America/Indiana/Indianapolis +America/Indiana/Winamac: America/Indiana/Indianapolis +America/Indianapolis: America/Indiana/Indianapolis +America/Inuvik: America/Denver +America/Iqaluit: America/New_York +America/Jamaica: America/Bogota +America/Jujuy: America/Argentina/Buenos_Aires +America/Juneau: America/Juneau +America/Kentucky/Louisville: America/New_York +America/Kentucky/Monticello: America/New_York +America/Knox_IN: America/Chicago +America/Kralendijk: America/Puerto_Rico +America/La_Paz: America/La_Paz +America/Lima: America/Lima +America/Los_Angeles: America/Los_Angeles +America/Louisville: America/New_York +America/Lower_Princes: America/Puerto_Rico +America/Maceio: America/Sao_Paulo +America/Managua: America/Mexico_City +America/Manaus: America/Caracas +America/Marigot: America/Puerto_Rico +America/Martinique: America/Puerto_Rico +America/Matamoros: America/Chicago +America/Mazatlan: America/Mazatlan +America/Mendoza: America/Argentina/Buenos_Aires +America/Menominee: America/Chicago +America/Merida: America/Mexico_City +America/Metlakatla: America/Juneau +America/Mexico_City: America/Mexico_City +# America/Miquelon inexact match +America/Miquelon: Atlantic/South_Georgia +America/Moncton: America/Halifax +America/Monterrey: America/Mexico_City +America/Montevideo: America/Montevideo +America/Montreal: America/New_York +America/Montserrat: America/Puerto_Rico +America/Nassau: America/New_York +America/New_York: America/New_York +America/Nipigon: America/New_York +America/Nome: America/Juneau +America/Noronha: Atlantic/South_Georgia +America/North_Dakota/Beulah: America/Chicago +America/North_Dakota/Center: America/Chicago +America/North_Dakota/New_Salem: America/Chicago +America/Nuuk: America/Godthab +America/Ojinaga: America/Chicago +America/Panama: America/Bogota +America/Pangnirtung: America/New_York +America/Paramaribo: America/Sao_Paulo +America/Phoenix: America/Phoenix +America/Port-au-Prince: America/New_York +America/Port_of_Spain: America/Puerto_Rico +America/Porto_Acre: America/Bogota +America/Porto_Velho: America/Caracas +America/Puerto_Rico: America/Puerto_Rico +America/Punta_Arenas: America/Sao_Paulo +America/Rainy_River: America/Chicago +America/Rankin_Inlet: America/Chicago +America/Recife: America/Sao_Paulo +America/Regina: America/Regina +America/Resolute: America/Chicago +America/Rio_Branco: America/Bogota +America/Rosario: America/Argentina/Buenos_Aires +America/Santa_Isabel: America/Tijuana +America/Santarem: America/Sao_Paulo +America/Santiago: America/Santiago +America/Santo_Domingo: America/Puerto_Rico +America/Sao_Paulo: America/Sao_Paulo +America/Scoresbysund: America/Godthab +America/Shiprock: America/Denver +America/Sitka: America/Juneau +America/St_Barthelemy: America/Puerto_Rico +America/St_Johns: America/St_Johns +America/St_Kitts: America/Puerto_Rico +America/St_Lucia: America/Puerto_Rico +America/St_Thomas: America/Puerto_Rico +America/St_Vincent: America/Puerto_Rico +America/Swift_Current: America/Regina +America/Tegucigalpa: America/Mexico_City +America/Thule: America/Halifax +America/Thunder_Bay: America/New_York +America/Tijuana: America/Tijuana +America/Toronto: America/New_York +America/Tortola: America/Puerto_Rico +America/Vancouver: America/Los_Angeles +America/Virgin: America/Puerto_Rico +America/Whitehorse: America/Phoenix +America/Winnipeg: America/Chicago +America/Yakutat: America/Juneau +America/Yellowknife: America/Denver +Antarctica/Casey: Australia/Perth +Antarctica/Davis: Asia/Jakarta +Antarctica/DumontDUrville: Pacific/Port_Moresby +Antarctica/Macquarie: Australia/Melbourne +Antarctica/Mawson: Asia/Karachi +Antarctica/McMurdo: Pacific/Auckland +Antarctica/Palmer: America/Sao_Paulo +Antarctica/Rothera: America/Sao_Paulo +Antarctica/South_Pole: Pacific/Auckland +Antarctica/Syowa: Asia/Riyadh +# Antarctica/Troll inexact match +Antarctica/Troll: Africa/Algiers +Antarctica/Vostok: Asia/Karachi +Arctic/Longyearbyen: Europe/Berlin +Asia/Aden: Asia/Riyadh +Asia/Almaty: Asia/Almaty +Asia/Amman: Europe/Istanbul +Asia/Anadyr: Asia/Kamchatka +Asia/Aqtau: Asia/Almaty +Asia/Aqtobe: Asia/Almaty +Asia/Ashgabat: Asia/Almaty +Asia/Ashkhabad: Asia/Almaty +Asia/Atyrau: Asia/Almaty +Asia/Baghdad: Asia/Baghdad +Asia/Bahrain: Asia/Riyadh +Asia/Baku: Asia/Baku +Asia/Bangkok: Asia/Bangkok +Asia/Barnaul: Asia/Novosibirsk +Asia/Beirut: Europe/Kiev +Asia/Bishkek: Asia/Dhaka +Asia/Brunei: Asia/Kuala_Lumpur +Asia/Calcutta: Asia/Kolkata +Asia/Chita: Asia/Yakutsk +Asia/Choibalsan: Asia/Chongqing +Asia/Chongqing: Asia/Chongqing +Asia/Chungking: Asia/Chongqing +Asia/Colombo: Asia/Colombo +Asia/Dacca: Asia/Dhaka +Asia/Damascus: Europe/Istanbul +Asia/Dhaka: Asia/Dhaka +Asia/Dili: Asia/Tokyo +Asia/Dubai: Asia/Yerevan +Asia/Dushanbe: Asia/Tashkent +Asia/Famagusta: Europe/Athens +Asia/Gaza: Asia/Jerusalem +Asia/Harbin: Asia/Shanghai +Asia/Hebron: Asia/Jerusalem +Asia/Ho_Chi_Minh: Asia/Bangkok +Asia/Hong_Kong: Asia/Hong_Kong +Asia/Hovd: Asia/Bangkok +Asia/Irkutsk: Asia/Irkutsk +Asia/Istanbul: Europe/Istanbul +Asia/Jakarta: Asia/Jakarta +Asia/Jayapura: Asia/Tokyo +Asia/Jerusalem: Asia/Jerusalem +Asia/Kabul: Asia/Kabul +Asia/Kamchatka: Asia/Kamchatka +Asia/Karachi: Asia/Karachi +Asia/Kashgar: Asia/Urumqi +Asia/Kathmandu: Asia/Kathmandu +Asia/Katmandu: Asia/Kathmandu +Asia/Khandyga: Asia/Yakutsk +Asia/Kolkata: Asia/Kolkata +Asia/Krasnoyarsk: Asia/Krasnoyarsk +Asia/Kuala_Lumpur: Asia/Kuala_Lumpur +Asia/Kuching: Asia/Kuala_Lumpur +Asia/Kuwait: Asia/Riyadh +Asia/Macao: Asia/Shanghai +Asia/Macau: Asia/Shanghai +Asia/Magadan: Asia/Magadan +Asia/Makassar: Asia/Kuala_Lumpur +Asia/Manila: Asia/Kuala_Lumpur +Asia/Muscat: Asia/Yerevan +Asia/Nicosia: Europe/Athens +Asia/Novokuznetsk: Asia/Novosibirsk +Asia/Novosibirsk: Asia/Novosibirsk +Asia/Omsk: Asia/Urumqi +Asia/Oral: Asia/Tashkent +Asia/Phnom_Penh: Asia/Bangkok +Asia/Pontianak: Asia/Jakarta +Asia/Pyongyang: Asia/Seoul +Asia/Qatar: Asia/Riyadh +Asia/Qostanay: Asia/Almaty +Asia/Qyzylorda: Asia/Almaty +Asia/Rangoon: Asia/Rangoon +Asia/Riyadh: Asia/Riyadh +Asia/Saigon: Asia/Bangkok +Asia/Sakhalin: Asia/Srednekolymsk +Asia/Samarkand: Asia/Tashkent +Asia/Seoul: Asia/Seoul +Asia/Shanghai: Asia/Shanghai +Asia/Singapore: Asia/Singapore +Asia/Srednekolymsk: Asia/Srednekolymsk +Asia/Taipei: Asia/Taipei +Asia/Tashkent: Asia/Tashkent +Asia/Tbilisi: Asia/Tbilisi +Asia/Tehran: Asia/Tehran +Asia/Tel_Aviv: Asia/Jerusalem +Asia/Thimbu: Asia/Dhaka +Asia/Thimphu: Asia/Dhaka +Asia/Tokyo: Asia/Tokyo +Asia/Tomsk: Asia/Novosibirsk +Asia/Ujung_Pandang: Asia/Kuala_Lumpur +Asia/Ulaanbaatar: Asia/Ulaanbaatar +Asia/Ulan_Bator: Asia/Ulaanbaatar +Asia/Urumqi: Asia/Urumqi +Asia/Ust-Nera: Asia/Vladivostok +Asia/Vientiane: Asia/Bangkok +Asia/Vladivostok: Asia/Vladivostok +Asia/Yakutsk: Asia/Yakutsk +Asia/Yangon: Asia/Rangoon +Asia/Yekaterinburg: Asia/Yekaterinburg +Asia/Yerevan: Asia/Yerevan +Atlantic/Azores: Atlantic/Azores +Atlantic/Bermuda: America/Halifax +Atlantic/Canary: Europe/London +Atlantic/Cape_Verde: Atlantic/Cape_Verde +Atlantic/Faeroe: Europe/London +Atlantic/Faroe: Europe/London +Atlantic/Jan_Mayen: Europe/Berlin +Atlantic/Madeira: Europe/London +Atlantic/Reykjavik: Africa/Monrovia +Atlantic/South_Georgia: Atlantic/South_Georgia +Atlantic/St_Helena: Africa/Monrovia +Atlantic/Stanley: America/Argentina/Buenos_Aires +Australia/ACT: Australia/Sydney +Australia/Adelaide: Australia/Adelaide +Australia/Brisbane: Australia/Brisbane +Australia/Broken_Hill: Australia/Adelaide +Australia/Canberra: Australia/Canberra +Australia/Currie: Australia/Hobart +Australia/Darwin: Australia/Darwin +# Australia/Eucla inexact match +Australia/Eucla: Australia/Perth +Australia/Hobart: Australia/Hobart +# Australia/LHI inexact match +Australia/LHI: Pacific/Noumea +Australia/Lindeman: Australia/Brisbane +# Australia/Lord_Howe inexact match +Australia/Lord_Howe: Pacific/Noumea +Australia/Melbourne: Australia/Melbourne +Australia/North: Australia/Darwin +Australia/NSW: Australia/Sydney +Australia/Perth: Australia/Perth +Australia/Queensland: Australia/Brisbane +Australia/South: Australia/Adelaide +Australia/Sydney: Australia/Sydney +Australia/Tasmania: Australia/Hobart +Australia/Victoria: Australia/Melbourne +Australia/West: Australia/Perth +Australia/Yancowinna: Australia/Adelaide +Brazil/Acre: America/Bogota +Brazil/DeNoronha: Atlantic/South_Georgia +Brazil/East: America/Sao_Paulo +Brazil/West: America/Caracas +Canada/Atlantic: America/Halifax +Canada/Central: America/Chicago +Canada/Eastern: America/New_York +Canada/Mountain: America/Denver +Canada/Newfoundland: America/St_Johns +Canada/Pacific: America/Los_Angeles +Canada/Saskatchewan: America/Regina +Canada/Yukon: America/Phoenix +CET: Europe/Paris +Chile/Continental: America/Santiago +Chile/EasterIsland: America/Chicago +CST6CDT: America/Chicago +Cuba: America/New_York +EET: Europe/Sofia +Egypt: Africa/Cairo +Eire: Europe/Dublin +EST: America/Bogota +EST5EDT: America/New_York +Etc/GMT: Etc/UTC +Etc/GMT+0: Etc/UTC +Etc/GMT+1: Atlantic/Cape_Verde +Etc/GMT+10: Pacific/Honolulu +Etc/GMT+11: Pacific/Midway +Etc/GMT+12: Etc/GMT+12 +Etc/GMT+2: Atlantic/South_Georgia +Etc/GMT+3: America/Sao_Paulo +Etc/GMT+4: America/Caracas +Etc/GMT+5: America/Bogota +Etc/GMT+6: America/Mexico_City +Etc/GMT+7: America/Phoenix +# Etc/GMT+8 inexact match +Etc/GMT+8: America/Juneau +# Etc/GMT+9 inexact match +Etc/GMT+9: America/Juneau +Etc/GMT-0: Etc/UTC +Etc/GMT-1: Africa/Algiers +Etc/GMT-10: Pacific/Port_Moresby +Etc/GMT-11: Asia/Magadan +Etc/GMT-12: Pacific/Fiji +Etc/GMT-13: Pacific/Tongatapu +# Etc/GMT-14 inexact match +Etc/GMT-14: Pacific/Apia +Etc/GMT-2: Africa/Harare +Etc/GMT-3: Africa/Nairobi +Etc/GMT-4: Asia/Baku +Etc/GMT-5: Asia/Almaty +Etc/GMT-6: Asia/Dhaka +Etc/GMT-7: Asia/Bangkok +Etc/GMT-8: Asia/Chongqing +Etc/GMT-9: Asia/Yakutsk +Etc/GMT0: Etc/UTC +Etc/Greenwich: Etc/UTC +Etc/UCT: Etc/UTC +Etc/Universal: Etc/UTC +Etc/UTC: Etc/UTC +Etc/Zulu: Etc/UTC +Europe/Amsterdam: Europe/Brussels +Europe/Andorra: Europe/Brussels +Europe/Astrakhan: Asia/Yerevan +Europe/Athens: Europe/Athens +Europe/Belfast: Europe/London +Europe/Belgrade: Europe/Belgrade +Europe/Berlin: Europe/Berlin +Europe/Bratislava: Europe/Bratislava +Europe/Brussels: Europe/Brussels +Europe/Bucharest: Europe/Bucharest +Europe/Budapest: Europe/Budapest +Europe/Busingen: Europe/Zurich +Europe/Chisinau: Europe/Bucharest +Europe/Copenhagen: Europe/Copenhagen +Europe/Dublin: Europe/Dublin +Europe/Gibraltar: Europe/Madrid +Europe/Guernsey: Europe/London +Europe/Helsinki: Europe/Helsinki +Europe/Isle_of_Man: Europe/London +Europe/Istanbul: Europe/Istanbul +Europe/Jersey: Europe/London +Europe/Kaliningrad: Europe/Kaliningrad +Europe/Kiev: Europe/Kiev +Europe/Kirov: Europe/Moscow +Europe/Kyiv: Europe/Kiev +Europe/Lisbon: Europe/Lisbon +Europe/Ljubljana: Europe/Belgrade +Europe/London: Europe/London +Europe/Luxembourg: Europe/Brussels +Europe/Madrid: Europe/Madrid +Europe/Malta: Europe/Rome +Europe/Mariehamn: Europe/Helsinki +Europe/Minsk: Europe/Minsk +Europe/Monaco: Europe/Paris +Europe/Moscow: Europe/Moscow +Europe/Nicosia: Europe/Athens +Europe/Oslo: Europe/Berlin +Europe/Paris: Europe/Paris +Europe/Podgorica: Europe/Belgrade +Europe/Prague: Europe/Prague +Europe/Riga: Europe/Riga +Europe/Rome: Europe/Rome +Europe/Samara: Europe/Samara +Europe/San_Marino: Europe/Rome +Europe/Sarajevo: Europe/Belgrade +Europe/Saratov: Asia/Yerevan +Europe/Simferopol: Europe/Moscow +Europe/Skopje: Europe/Belgrade +Europe/Sofia: Europe/Sofia +Europe/Stockholm: Europe/Stockholm +Europe/Tallinn: Europe/Tallinn +Europe/Tirane: Europe/Belgrade +Europe/Tiraspol: Europe/Bucharest +Europe/Ulyanovsk: Asia/Yerevan +Europe/Uzhgorod: Europe/Kiev +Europe/Vaduz: Europe/Zurich +Europe/Vatican: Europe/Rome +Europe/Vienna: Europe/Vienna +Europe/Vilnius: Europe/Vilnius +Europe/Volgograd: Europe/Volgograd +Europe/Warsaw: Europe/Warsaw +Europe/Zagreb: Europe/Belgrade +Europe/Zaporozhye: Europe/Kiev +Europe/Zurich: Europe/Zurich +Factory: Etc/UTC +GB: Europe/London +GB-Eire: Europe/London +GMT: Etc/UTC +GMT+0: Etc/UTC +GMT-0: Etc/UTC +GMT0: Etc/UTC +Greenwich: Etc/UTC +Hongkong: Asia/Hong_Kong +HST: Pacific/Honolulu +Iceland: Africa/Monrovia +Indian/Antananarivo: Africa/Nairobi +Indian/Chagos: Asia/Dhaka +Indian/Christmas: Asia/Bangkok +Indian/Cocos: Asia/Rangoon +Indian/Comoro: Africa/Nairobi +Indian/Kerguelen: Asia/Karachi +Indian/Mahe: Asia/Yerevan +Indian/Maldives: Asia/Karachi +Indian/Mauritius: Asia/Yerevan +Indian/Mayotte: Africa/Nairobi +Indian/Reunion: Asia/Yerevan +Iran: Asia/Tehran +Israel: Asia/Jerusalem +Jamaica: America/Bogota +Japan: Asia/Tokyo +Kwajalein: Pacific/Majuro +Libya: Africa/Harare +MET: Europe/Paris +Mexico/BajaNorte: America/Tijuana +Mexico/BajaSur: America/Mazatlan +Mexico/General: America/Mexico_City +MST: America/Phoenix +MST7MDT: America/Denver +Navajo: America/Denver +NZ: Pacific/Auckland +NZ-CHAT: Pacific/Chatham +Pacific/Apia: Pacific/Apia +Pacific/Auckland: Pacific/Auckland +Pacific/Bougainville: Pacific/Noumea +Pacific/Chatham: Pacific/Chatham +Pacific/Chuuk: Pacific/Port_Moresby +Pacific/Easter: America/Chicago +Pacific/Efate: Pacific/Noumea +Pacific/Enderbury: Pacific/Tongatapu +Pacific/Fakaofo: Pacific/Fakaofo +Pacific/Fiji: Pacific/Fiji +Pacific/Funafuti: Pacific/Majuro +Pacific/Galapagos: America/Mexico_City +# Pacific/Gambier inexact match +Pacific/Gambier: Pacific/Honolulu +Pacific/Guadalcanal: Pacific/Noumea +Pacific/Guam: Pacific/Guam +Pacific/Honolulu: Pacific/Honolulu +Pacific/Johnston: Pacific/Honolulu +Pacific/Kanton: Pacific/Tongatapu +# Pacific/Kiritimati inexact match +Pacific/Kiritimati: Pacific/Apia +Pacific/Kosrae: Pacific/Noumea +Pacific/Kwajalein: Pacific/Majuro +Pacific/Majuro: Pacific/Majuro +# Pacific/Marquesas inexact match +Pacific/Marquesas: Pacific/Honolulu +Pacific/Midway: Pacific/Midway +Pacific/Nauru: Pacific/Majuro +Pacific/Niue: Pacific/Midway +# Pacific/Norfolk inexact match +Pacific/Norfolk: Pacific/Noumea +Pacific/Noumea: Pacific/Noumea +Pacific/Pago_Pago: Pacific/Pago_Pago +Pacific/Palau: Asia/Yakutsk +# Pacific/Pitcairn inexact match +Pacific/Pitcairn: America/Juneau +Pacific/Pohnpei: Pacific/Noumea +Pacific/Ponape: Pacific/Noumea +Pacific/Port_Moresby: Pacific/Port_Moresby +Pacific/Rarotonga: Pacific/Honolulu +Pacific/Saipan: Pacific/Guam +Pacific/Samoa: Pacific/Pago_Pago +Pacific/Tahiti: Pacific/Honolulu +Pacific/Tarawa: Pacific/Majuro +Pacific/Tongatapu: Pacific/Tongatapu +Pacific/Truk: Pacific/Port_Moresby +Pacific/Wake: Pacific/Majuro +Pacific/Wallis: Pacific/Majuro +Pacific/Yap: Pacific/Port_Moresby +Poland: Europe/Warsaw +Portugal: Europe/Lisbon +PRC: Asia/Shanghai +PST8PDT: America/Los_Angeles +ROC: Asia/Taipei +ROK: Asia/Seoul +Singapore: Asia/Singapore +Turkey: Europe/Istanbul +UCT: Etc/UTC +Universal: Etc/UTC +US/Alaska: America/Juneau +# US/Aleutian inexact match +US/Aleutian: Pacific/Honolulu +US/Arizona: America/Phoenix +US/Central: America/Chicago +US/East-Indiana: America/Indiana/Indianapolis +US/Eastern: America/New_York +US/Hawaii: Pacific/Honolulu +US/Indiana-Starke: America/Indiana/Indianapolis +US/Michigan: America/New_York +US/Mountain: America/Denver +US/Pacific: America/Los_Angeles +US/Samoa: Pacific/Pago_Pago +UTC: Etc/UTC +W-SU: Europe/Moscow +WET: Europe/London +Zulu: Etc/UTC diff --git a/lib/worldwide/deprecated_time_zone_mapper.rb b/lib/worldwide/deprecated_time_zone_mapper.rb index df7681c7a..a38c516f1 100644 --- a/lib/worldwide/deprecated_time_zone_mapper.rb +++ b/lib/worldwide/deprecated_time_zone_mapper.rb @@ -8,6 +8,16 @@ class << self def to_supported(zone) DEPRECATED_ZONES_MAP.fetch(zone&.to_sym, zone) end + + def to_rails(iana_timezone) + iana_timezones[iana_timezone] + end + + private + + def iana_timezones + @iana_timezones ||= YAML.safe_load_file("#{Worldwide::Paths::DB_DATA_ROOT}/iana_to_rails_time_zone.yml") + end end DEPRECATED_ZONES_MAP = { diff --git a/test/worldwide/deprecated_time_zone_mapper_test.rb b/test/worldwide/deprecated_time_zone_mapper_test.rb index 7b545ab6d..24d427708 100644 --- a/test/worldwide/deprecated_time_zone_mapper_test.rb +++ b/test/worldwide/deprecated_time_zone_mapper_test.rb @@ -23,8 +23,628 @@ class TimeZoneTest < ActiveSupport::TestCase end end + test "#to_rails converts as expected" do + iana_data_input_expected.each do |input, expected| + actual = Worldwide::DeprecatedTimeZoneMapper.to_rails(input) + + assert_equal expected, actual + end + end + test "#to_supported returns nil when passed nil" do assert_nil Worldwide::DeprecatedTimeZoneMapper.to_supported(nil) end + + test "#to_rails returns nil when passed nil" do + assert_nil Worldwide::DeprecatedTimeZoneMapper.to_rails(nil) + end + + test "#to_rails returns nil when passed an unsupported timezone" do + assert_nil Worldwide::DeprecatedTimeZoneMapper.to_rails("Timezone/Unsupported") + end + + private + + def iana_data_input_expected + [ + ["Africa/Abidjan", "Africa/Monrovia"], + ["Africa/Accra", "Africa/Monrovia"], + ["Africa/Addis_Ababa", "Africa/Nairobi"], + ["Africa/Algiers", "Africa/Algiers"], + ["Africa/Asmara", "Africa/Nairobi"], + ["Africa/Asmera", "Africa/Nairobi"], + ["Africa/Bamako", "Africa/Monrovia"], + ["Africa/Bangui", "Africa/Algiers"], + ["Africa/Banjul", "Africa/Monrovia"], + ["Africa/Bissau", "Africa/Monrovia"], + ["Africa/Blantyre", "Africa/Harare"], + ["Africa/Brazzaville", "Africa/Algiers"], + ["Africa/Bujumbura", "Africa/Harare"], + ["Africa/Cairo", "Africa/Cairo"], + ["Africa/Casablanca", "Africa/Casablanca"], + ["Africa/Ceuta", "Europe/Madrid"], + ["Africa/Conakry", "Africa/Monrovia"], + ["Africa/Dakar", "Africa/Monrovia"], + ["Africa/Dar_es_Salaam", "Africa/Nairobi"], + ["Africa/Djibouti", "Africa/Nairobi"], + ["Africa/Douala", "Africa/Algiers"], + ["Africa/El_Aaiun", "Africa/Casablanca"], + ["Africa/Freetown", "Africa/Monrovia"], + ["Africa/Gaborone", "Africa/Harare"], + ["Africa/Harare", "Africa/Harare"], + ["Africa/Johannesburg", "Africa/Johannesburg"], + ["Africa/Juba", "Africa/Harare"], + ["Africa/Kampala", "Africa/Nairobi"], + ["Africa/Khartoum", "Africa/Harare"], + ["Africa/Kigali", "Africa/Harare"], + ["Africa/Kinshasa", "Africa/Algiers"], + ["Africa/Lagos", "Africa/Algiers"], + ["Africa/Libreville", "Africa/Algiers"], + ["Africa/Lome", "Africa/Monrovia"], + ["Africa/Luanda", "Africa/Algiers"], + ["Africa/Lubumbashi", "Africa/Harare"], + ["Africa/Lusaka", "Africa/Harare"], + ["Africa/Malabo", "Africa/Algiers"], + ["Africa/Maputo", "Africa/Harare"], + ["Africa/Maseru", "Africa/Johannesburg"], + ["Africa/Mbabane", "Africa/Johannesburg"], + ["Africa/Mogadishu", "Africa/Nairobi"], + ["Africa/Monrovia", "Africa/Monrovia"], + ["Africa/Nairobi", "Africa/Nairobi"], + ["Africa/Ndjamena", "Africa/Algiers"], + ["Africa/Niamey", "Africa/Algiers"], + ["Africa/Nouakchott", "Africa/Monrovia"], + ["Africa/Ouagadougou", "Africa/Monrovia"], + ["Africa/Porto-Novo", "Africa/Algiers"], + ["Africa/Sao_Tome", "Africa/Monrovia"], + ["Africa/Timbuktu", "Africa/Monrovia"], + ["Africa/Tripoli", "Africa/Harare"], + ["Africa/Tunis", "Africa/Algiers"], + ["Africa/Windhoek", "Africa/Harare"], + ["America/Adak", "Pacific/Honolulu"], + ["America/Anchorage", "America/Juneau"], + ["America/Anguilla", "America/Puerto_Rico"], + ["America/Antigua", "America/Puerto_Rico"], + ["America/Araguaina", "America/Sao_Paulo"], + ["America/Argentina/Buenos_Aires", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Catamarca", "America/Argentina/Buenos_Aires"], + ["America/Argentina/ComodRivadavia", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Cordoba", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Jujuy", "America/Argentina/Buenos_Aires"], + ["America/Argentina/La_Rioja", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Mendoza", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Rio_Gallegos", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Salta", "America/Argentina/Buenos_Aires"], + ["America/Argentina/San_Juan", "America/Argentina/Buenos_Aires"], + ["America/Argentina/San_Luis", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Tucuman", "America/Argentina/Buenos_Aires"], + ["America/Argentina/Ushuaia", "America/Argentina/Buenos_Aires"], + ["America/Aruba", "America/Puerto_Rico"], + ["America/Asuncion", "America/Halifax"], + ["America/Atikokan", "America/Bogota"], + ["America/Atka", "Pacific/Honolulu"], + ["America/Bahia", "America/Sao_Paulo"], + ["America/Bahia_Banderas", "America/Mexico_City"], + ["America/Barbados", "America/Puerto_Rico"], + ["America/Belem", "America/Sao_Paulo"], + ["America/Belize", "America/Mexico_City"], + ["America/Blanc-Sablon", "America/Puerto_Rico"], + ["America/Boa_Vista", "America/Caracas"], + ["America/Bogota", "America/Bogota"], + ["America/Boise", "America/Denver"], + ["America/Buenos_Aires", "America/Argentina/Buenos_Aires"], + ["America/Cambridge_Bay", "America/Denver"], + ["America/Campo_Grande", "America/Caracas"], + ["America/Cancun", "America/Bogota"], + ["America/Caracas", "America/Caracas"], + ["America/Catamarca", "America/Argentina/Buenos_Aires"], + ["America/Cayenne", "America/Sao_Paulo"], + ["America/Cayman", "America/Bogota"], + ["America/Chicago", "America/Chicago"], + ["America/Chihuahua", "America/Chihuahua"], + ["America/Ciudad_Juarez", "America/Denver"], + ["America/Coral_Harbour", "America/Bogota"], + ["America/Cordoba", "America/Argentina/Buenos_Aires"], + ["America/Costa_Rica", "America/Mexico_City"], + ["America/Creston", "America/Phoenix"], + ["America/Cuiaba", "America/Caracas"], + ["America/Curacao", "America/Puerto_Rico"], + ["America/Danmarkshavn", "Etc/Utc"], + ["America/Dawson", "America/Phoenix"], + ["America/Dawson_Creek", "America/Phoenix"], + ["America/Denver", "America/Denver"], + ["America/Detroit", "America/New_York"], + ["America/Dominica", "America/Puerto_Rico"], + ["America/Edmonton", "America/Denver"], + ["America/Eirunepe", "America/Bogota"], + ["America/El_Salvador", "America/Mexico_City"], + ["America/Ensenada", "America/Los_Angeles"], + ["America/Fort_Nelson", "America/Phoenix"], + ["America/Fort_Wayne", "America/New_York"], + ["America/Fortaleza", "America/Sao_Paulo"], + ["America/Glace_Bay", "America/Halifax"], + ["America/Godthab", "America/Godthab"], + ["America/Goose_Bay", "America/Halifax"], + ["America/Grand_Turk", "America/New_York"], + ["America/Grenada", "America/Puerto_Rico"], + ["America/Guadeloupe", "America/Puerto_Rico"], + ["America/Guatemala", "America/Mexico_City"], + ["America/Guayaquil", "America/Bogota"], + ["America/Guyana", "America/Caracas"], + ["America/Halifax", "America/Halifax"], + ["America/Havana", "America/New_York"], + ["America/Hermosillo", "America/Phoenix"], + ["America/Indiana/Indianapolis", "America/Indiana/Indianapolis"], + ["America/Indiana/Knox", "America/Chicago"], + ["America/Indiana/Marengo", "America/Indiana/Indianapolis"], + ["America/Indiana/Petersburg", "America/Indiana/Indianapolis"], + ["America/Indiana/Tell_City", "America/Chicago"], + ["America/Indiana/Vevay", "America/Indiana/Indianapolis"], + ["America/Indiana/Vincennes", "America/Indiana/Indianapolis"], + ["America/Indiana/Winamac", "America/Indiana/Indianapolis"], + ["America/Indianapolis", "America/Indiana/Indianapolis"], + ["America/Inuvik", "America/Denver"], + ["America/Iqaluit", "America/New_York"], + ["America/Jamaica", "America/Bogota"], + ["America/Jujuy", "America/Argentina/Buenos_Aires"], + ["America/Juneau", "America/Juneau"], + ["America/Kentucky/Louisville", "America/New_York"], + ["America/Kentucky/Monticello", "America/New_York"], + ["America/Knox_IN", "America/Chicago"], + ["America/Kralendijk", "America/Puerto_Rico"], + ["America/La_Paz", "America/La_Paz"], + ["America/Lima", "America/Lima"], + ["America/Los_Angeles", "America/Los_Angeles"], + ["America/Louisville", "America/New_York"], + ["America/Lower_Princes", "America/Puerto_Rico"], + ["America/Maceio", "America/Sao_Paulo"], + ["America/Managua", "America/Mexico_City"], + ["America/Manaus", "America/Caracas"], + ["America/Marigot", "America/Puerto_Rico"], + ["America/Martinique", "America/Puerto_Rico"], + ["America/Matamoros", "America/Chicago"], + ["America/Mazatlan", "America/Mazatlan"], + ["America/Mendoza", "America/Argentina/Buenos_Aires"], + ["America/Menominee", "America/Chicago"], + ["America/Merida", "America/Mexico_City"], + ["America/Metlakatla", "America/Juneau"], + ["America/Mexico_City", "America/Mexico_City"], + ["America/Miquelon", "Atlantic/South_Georgia"], + ["America/Moncton", "America/Halifax"], + ["America/Monterrey", "America/Mexico_City"], + ["America/Montevideo", "America/Montevideo"], + ["America/Montreal", "America/New_York"], + ["America/Montserrat", "America/Puerto_Rico"], + ["America/Nassau", "America/New_York"], + ["America/New_York", "America/New_York"], + ["America/Nipigon", "America/New_York"], + ["America/Nome", "America/Juneau"], + ["America/Noronha", "Atlantic/South_Georgia"], + ["America/North_Dakota/Beulah", "America/Chicago"], + ["America/North_Dakota/Center", "America/Chicago"], + ["America/North_Dakota/New_Salem", "America/Chicago"], + ["America/Nuuk", "America/Godthab"], + ["America/Ojinaga", "America/Chicago"], + ["America/Panama", "America/Bogota"], + ["America/Pangnirtung", "America/New_York"], + ["America/Paramaribo", "America/Sao_Paulo"], + ["America/Phoenix", "America/Phoenix"], + ["America/Port-au-Prince", "America/New_York"], + ["America/Port_of_Spain", "America/Puerto_Rico"], + ["America/Porto_Acre", "America/Bogota"], + ["America/Porto_Velho", "America/Caracas"], + ["America/Puerto_Rico", "America/Puerto_Rico"], + ["America/Punta_Arenas", "America/Sao_Paulo"], + ["America/Rainy_River", "America/Chicago"], + ["America/Rankin_Inlet", "America/Chicago"], + ["America/Recife", "America/Sao_Paulo"], + ["America/Regina", "America/Regina"], + ["America/Resolute", "America/Chicago"], + ["America/Rio_Branco", "America/Bogota"], + ["America/Rosario", "America/Argentina/Buenos_Aires"], + ["America/Santa_Isabel", "America/Tijuana"], + ["America/Santarem", "America/Sao_Paulo"], + ["America/Santiago", "America/Santiago"], + ["America/Santo_Domingo", "America/Puerto_Rico"], + ["America/Sao_Paulo", "America/Sao_Paulo"], + ["America/Scoresbysund", "America/Godthab"], + ["America/Shiprock", "America/Denver"], + ["America/Sitka", "America/Juneau"], + ["America/St_Barthelemy", "America/Puerto_Rico"], + ["America/St_Johns", "America/St_Johns"], + ["America/St_Kitts", "America/Puerto_Rico"], + ["America/St_Lucia", "America/Puerto_Rico"], + ["America/St_Thomas", "America/Puerto_Rico"], + ["America/St_Vincent", "America/Puerto_Rico"], + ["America/Swift_Current", "America/Regina"], + ["America/Tegucigalpa", "America/Mexico_City"], + ["America/Thule", "America/Halifax"], + ["America/Thunder_Bay", "America/New_York"], + ["America/Tijuana", "America/Tijuana"], + ["America/Toronto", "America/New_York"], + ["America/Tortola", "America/Puerto_Rico"], + ["America/Vancouver", "America/Los_Angeles"], + ["America/Virgin", "America/Puerto_Rico"], + ["America/Whitehorse", "America/Phoenix"], + ["America/Winnipeg", "America/Chicago"], + ["America/Yakutat", "America/Juneau"], + ["America/Yellowknife", "America/Denver"], + ["Antarctica/Casey", "Australia/Perth"], + ["Antarctica/Davis", "Asia/Jakarta"], + ["Antarctica/DumontDUrville", "Pacific/Port_Moresby"], + ["Antarctica/Macquarie", "Australia/Melbourne"], + ["Antarctica/Mawson", "Asia/Karachi"], + ["Antarctica/McMurdo", "Pacific/Auckland"], + ["Antarctica/Palmer", "America/Sao_Paulo"], + ["Antarctica/Rothera", "America/Sao_Paulo"], + ["Antarctica/South_Pole", "Pacific/Auckland"], + ["Antarctica/Syowa", "Asia/Riyadh"], + ["Antarctica/Troll", "Africa/Algiers"], + ["Antarctica/Vostok", "Asia/Karachi"], + ["Arctic/Longyearbyen", "Europe/Berlin"], + ["Asia/Aden", "Asia/Riyadh"], + ["Asia/Almaty", "Asia/Almaty"], + ["Asia/Amman", "Europe/Istanbul"], + ["Asia/Anadyr", "Asia/Kamchatka"], + ["Asia/Aqtau", "Asia/Almaty"], + ["Asia/Aqtobe", "Asia/Almaty"], + ["Asia/Ashgabat", "Asia/Almaty"], + ["Asia/Ashkhabad", "Asia/Almaty"], + ["Asia/Atyrau", "Asia/Almaty"], + ["Asia/Baghdad", "Asia/Baghdad"], + ["Asia/Bahrain", "Asia/Riyadh"], + ["Asia/Baku", "Asia/Baku"], + ["Asia/Bangkok", "Asia/Bangkok"], + ["Asia/Barnaul", "Asia/Novosibirsk"], + ["Asia/Beirut", "Europe/Kiev"], + ["Asia/Bishkek", "Asia/Dhaka"], + ["Asia/Brunei", "Asia/Kuala_Lumpur"], + ["Asia/Calcutta", "Asia/Kolkata"], + ["Asia/Chita", "Asia/Yakutsk"], + ["Asia/Choibalsan", "Asia/Chongqing"], + ["Asia/Chongqing", "Asia/Chongqing"], + ["Asia/Chungking", "Asia/Chongqing"], + ["Asia/Colombo", "Asia/Colombo"], + ["Asia/Dacca", "Asia/Dhaka"], + ["Asia/Damascus", "Europe/Istanbul"], + ["Asia/Dhaka", "Asia/Dhaka"], + ["Asia/Dili", "Asia/Tokyo"], + ["Asia/Dubai", "Asia/Yerevan"], + ["Asia/Dushanbe", "Asia/Tashkent"], + ["Asia/Famagusta", "Europe/Athens"], + ["Asia/Gaza", "Asia/Jerusalem"], + ["Asia/Harbin", "Asia/Shanghai"], + ["Asia/Hebron", "Asia/Jerusalem"], + ["Asia/Ho_Chi_Minh", "Asia/Bangkok"], + ["Asia/Hong_Kong", "Asia/Hong_Kong"], + ["Asia/Hovd", "Asia/Bangkok"], + ["Asia/Irkutsk", "Asia/Irkutsk"], + ["Asia/Istanbul", "Europe/Istanbul"], + ["Asia/Jakarta", "Asia/Jakarta"], + ["Asia/Jayapura", "Asia/Tokyo"], + ["Asia/Jerusalem", "Asia/Jerusalem"], + ["Asia/Kabul", "Asia/Kabul"], + ["Asia/Kamchatka", "Asia/Kamchatka"], + ["Asia/Karachi", "Asia/Karachi"], + ["Asia/Kashgar", "Asia/Urumqi"], + ["Asia/Kathmandu", "Asia/Kathmandu"], + ["Asia/Katmandu", "Asia/Kathmandu"], + ["Asia/Khandyga", "Asia/Yakutsk"], + ["Asia/Kolkata", "Asia/Kolkata"], + ["Asia/Krasnoyarsk", "Asia/Krasnoyarsk"], + ["Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"], + ["Asia/Kuching", "Asia/Kuala_Lumpur"], + ["Asia/Kuwait", "Asia/Riyadh"], + ["Asia/Macao", "Asia/Shanghai"], + ["Asia/Macau", "Asia/Shanghai"], + ["Asia/Magadan", "Asia/Magadan"], + ["Asia/Makassar", "Asia/Kuala_Lumpur"], + ["Asia/Manila", "Asia/Kuala_Lumpur"], + ["Asia/Muscat", "Asia/Yerevan"], + ["Asia/Nicosia", "Europe/Athens"], + ["Asia/Novokuznetsk", "Asia/Novosibirsk"], + ["Asia/Novosibirsk", "Asia/Novosibirsk"], + ["Asia/Omsk", "Asia/Urumqi"], + ["Asia/Oral", "Asia/Tashkent"], + ["Asia/Phnom_Penh", "Asia/Bangkok"], + ["Asia/Pontianak", "Asia/Jakarta"], + ["Asia/Pyongyang", "Asia/Seoul"], + ["Asia/Qatar", "Asia/Riyadh"], + ["Asia/Qostanay", "Asia/Almaty"], + ["Asia/Qyzylorda", "Asia/Almaty"], + ["Asia/Rangoon", "Asia/Rangoon"], + ["Asia/Riyadh", "Asia/Riyadh"], + ["Asia/Saigon", "Asia/Bangkok"], + ["Asia/Sakhalin", "Asia/Srednekolymsk"], + ["Asia/Samarkand", "Asia/Tashkent"], + ["Asia/Seoul", "Asia/Seoul"], + ["Asia/Shanghai", "Asia/Shanghai"], + ["Asia/Singapore", "Asia/Singapore"], + ["Asia/Srednekolymsk", "Asia/Srednekolymsk"], + ["Asia/Taipei", "Asia/Taipei"], + ["Asia/Tashkent", "Asia/Tashkent"], + ["Asia/Tbilisi", "Asia/Tbilisi"], + ["Asia/Tehran", "Asia/Tehran"], + ["Asia/Tel_Aviv", "Asia/Jerusalem"], + ["Asia/Thimbu", "Asia/Dhaka"], + ["Asia/Thimphu", "Asia/Dhaka"], + ["Asia/Tokyo", "Asia/Tokyo"], + ["Asia/Tomsk", "Asia/Novosibirsk"], + ["Asia/Ujung_Pandang", "Asia/Kuala_Lumpur"], + ["Asia/Ulaanbaatar", "Asia/Ulaanbaatar"], + ["Asia/Ulan_Bator", "Asia/Ulaanbaatar"], + ["Asia/Urumqi", "Asia/Urumqi"], + ["Asia/Ust-Nera", "Asia/Vladivostok"], + ["Asia/Vientiane", "Asia/Bangkok"], + ["Asia/Vladivostok", "Asia/Vladivostok"], + ["Asia/Yakutsk", "Asia/Yakutsk"], + ["Asia/Yangon", "Asia/Rangoon"], + ["Asia/Yekaterinburg", "Asia/Yekaterinburg"], + ["Asia/Yerevan", "Asia/Yerevan"], + ["Atlantic/Azores", "Atlantic/Azores"], + ["Atlantic/Bermuda", "America/Halifax"], + ["Atlantic/Canary", "Europe/London"], + ["Atlantic/Cape_Verde", "Atlantic/Cape_Verde"], + ["Atlantic/Faeroe", "Europe/London"], + ["Atlantic/Faroe", "Europe/London"], + ["Atlantic/Jan_Mayen", "Europe/Berlin"], + ["Atlantic/Madeira", "Europe/London"], + ["Atlantic/Reykjavik", "Africa/Monrovia"], + ["Atlantic/South_Georgia", "Atlantic/South_Georgia"], + ["Atlantic/St_Helena", "Africa/Monrovia"], + ["Atlantic/Stanley", "America/Argentina/Buenos_Aires"], + ["Australia/ACT", "Australia/Sydney"], + ["Australia/Adelaide", "Australia/Adelaide"], + ["Australia/Brisbane", "Australia/Brisbane"], + ["Australia/Broken_Hill", "Australia/Adelaide"], + ["Australia/Canberra", "Australia/Canberra"], + ["Australia/Currie", "Australia/Hobart"], + ["Australia/Darwin", "Australia/Darwin"], + ["Australia/Eucla", "Australia/Perth"], + ["Australia/Hobart", "Australia/Hobart"], + ["Australia/LHI", "Pacific/Noumea"], + ["Australia/Lindeman", "Australia/Brisbane"], + ["Australia/Lord_Howe", "Pacific/Noumea"], + ["Australia/Melbourne", "Australia/Melbourne"], + ["Australia/North", "Australia/Darwin"], + ["Australia/NSW", "Australia/Sydney"], + ["Australia/Perth", "Australia/Perth"], + ["Australia/Queensland", "Australia/Brisbane"], + ["Australia/South", "Australia/Adelaide"], + ["Australia/Sydney", "Australia/Sydney"], + ["Australia/Tasmania", "Australia/Hobart"], + ["Australia/Victoria", "Australia/Melbourne"], + ["Australia/West", "Australia/Perth"], + ["Australia/Yancowinna", "Australia/Adelaide"], + ["Brazil/Acre", "America/Bogota"], + ["Brazil/DeNoronha", "Atlantic/South_Georgia"], + ["Brazil/East", "America/Sao_Paulo"], + ["Brazil/West", "America/Caracas"], + ["Canada/Atlantic", "America/Halifax"], + ["Canada/Central", "America/Chicago"], + ["Canada/Eastern", "America/New_York"], + ["Canada/Mountain", "America/Denver"], + ["Canada/Newfoundland", "America/St_Johns"], + ["Canada/Pacific", "America/Los_Angeles"], + ["Canada/Saskatchewan", "America/Regina"], + ["Canada/Yukon", "America/Phoenix"], + ["CET", "Europe/Paris"], + ["Chile/Continental", "America/Santiago"], + ["Chile/EasterIsland", "America/Chicago"], + ["CST6CDT", "America/Chicago"], + ["Cuba", "America/New_York"], + ["EET", "Europe/Sofia"], + ["Egypt", "Africa/Cairo"], + ["Eire", "Europe/Dublin"], + ["EST", "America/Bogota"], + ["EST5EDT", "America/New_York"], + ["Etc/GMT", "Etc/UTC"], + ["Etc/GMT+0", "Etc/UTC"], + ["Etc/GMT+1", "Atlantic/Cape_Verde"], + ["Etc/GMT+10", "Pacific/Honolulu"], + ["Etc/GMT+11", "Pacific/Midway"], + ["Etc/GMT+12", "Etc/GMT+12"], + ["Etc/GMT+2", "Atlantic/South_Georgia"], + ["Etc/GMT+3", "America/Sao_Paulo"], + ["Etc/GMT+4", "America/Caracas"], + ["Etc/GMT+5", "America/Bogota"], + ["Etc/GMT+6", "America/Mexico_City"], + ["Etc/GMT+7", "America/Phoenix"], + ["Etc/GMT+8", "America/Juneau"], + ["Etc/GMT+9", "America/Juneau"], + ["Etc/GMT-0", "Etc/UTC"], + ["Etc/GMT-1", "Africa/Algiers"], + ["Etc/GMT-10", "Pacific/Port_Moresby"], + ["Etc/GMT-11", "Asia/Magadan"], + ["Etc/GMT-12", "Pacific/Fiji"], + ["Etc/GMT-13", "Pacific/Tongatapu"], + ["Etc/GMT-14", "Pacific/Apia"], + ["Etc/GMT-2", "Africa/Harare"], + ["Etc/GMT-3", "Africa/Nairobi"], + ["Etc/GMT-4", "Asia/Baku"], + ["Etc/GMT-5", "Asia/Almaty"], + ["Etc/GMT-6", "Asia/Dhaka"], + ["Etc/GMT-7", "Asia/Bangkok"], + ["Etc/GMT-8", "Asia/Chongqing"], + ["Etc/GMT-9", "Asia/Yakutsk"], + ["Etc/GMT0", "Etc/UTC"], + ["Etc/Greenwich", "Etc/UTC"], + ["Etc/UCT", "Etc/UTC"], + ["Etc/Universal", "Etc/UTC"], + ["Etc/UTC", "Etc/UTC"], + ["Etc/Zulu", "Etc/UTC"], + ["Europe/Amsterdam", "Europe/Brussels"], + ["Europe/Andorra", "Europe/Brussels"], + ["Europe/Astrakhan", "Asia/Yerevan"], + ["Europe/Athens", "Europe/Athens"], + ["Europe/Belfast", "Europe/London"], + ["Europe/Belgrade", "Europe/Belgrade"], + ["Europe/Berlin", "Europe/Berlin"], + ["Europe/Bratislava", "Europe/Bratislava"], + ["Europe/Brussels", "Europe/Brussels"], + ["Europe/Bucharest", "Europe/Bucharest"], + ["Europe/Budapest", "Europe/Budapest"], + ["Europe/Busingen", "Europe/Zurich"], + ["Europe/Chisinau", "Europe/Bucharest"], + ["Europe/Copenhagen", "Europe/Copenhagen"], + ["Europe/Dublin", "Europe/Dublin"], + ["Europe/Gibraltar", "Europe/Madrid"], + ["Europe/Guernsey", "Europe/London"], + ["Europe/Helsinki", "Europe/Helsinki"], + ["Europe/Isle_of_Man", "Europe/London"], + ["Europe/Istanbul", "Europe/Istanbul"], + ["Europe/Jersey", "Europe/London"], + ["Europe/Kaliningrad", "Europe/Kaliningrad"], + ["Europe/Kiev", "Europe/Kiev"], + ["Europe/Kirov", "Europe/Moscow"], + ["Europe/Kyiv", "Europe/Kiev"], + ["Europe/Lisbon", "Europe/Lisbon"], + ["Europe/Ljubljana", "Europe/Belgrade"], + ["Europe/London", "Europe/London"], + ["Europe/Luxembourg", "Europe/Brussels"], + ["Europe/Madrid", "Europe/Madrid"], + ["Europe/Malta", "Europe/Rome"], + ["Europe/Mariehamn", "Europe/Helsinki"], + ["Europe/Minsk", "Europe/Minsk"], + ["Europe/Monaco", "Europe/Paris"], + ["Europe/Moscow", "Europe/Moscow"], + ["Europe/Nicosia", "Europe/Athens"], + ["Europe/Oslo", "Europe/Berlin"], + ["Europe/Paris", "Europe/Paris"], + ["Europe/Podgorica", "Europe/Belgrade"], + ["Europe/Prague", "Europe/Prague"], + ["Europe/Riga", "Europe/Riga"], + ["Europe/Rome", "Europe/Rome"], + ["Europe/Samara", "Europe/Samara"], + ["Europe/San_Marino", "Europe/Rome"], + ["Europe/Sarajevo", "Europe/Belgrade"], + ["Europe/Saratov", "Asia/Yerevan"], + ["Europe/Simferopol", "Europe/Moscow"], + ["Europe/Skopje", "Europe/Belgrade"], + ["Europe/Sofia", "Europe/Sofia"], + ["Europe/Stockholm", "Europe/Stockholm"], + ["Europe/Tallinn", "Europe/Tallinn"], + ["Europe/Tirane", "Europe/Belgrade"], + ["Europe/Tiraspol", "Europe/Bucharest"], + ["Europe/Ulyanovsk", "Asia/Yerevan"], + ["Europe/Uzhgorod", "Europe/Kiev"], + ["Europe/Vaduz", "Europe/Zurich"], + ["Europe/Vatican", "Europe/Rome"], + ["Europe/Vienna", "Europe/Vienna"], + ["Europe/Vilnius", "Europe/Vilnius"], + ["Europe/Volgograd", "Europe/Volgograd"], + ["Europe/Warsaw", "Europe/Warsaw"], + ["Europe/Zagreb", "Europe/Belgrade"], + ["Europe/Zaporozhye", "Europe/Kiev"], + ["Europe/Zurich", "Europe/Zurich"], + ["Factory", "Etc/UTC"], + ["GB", "Europe/London"], + ["GB-Eire", "Europe/London"], + ["GMT", "Etc/UTC"], + ["GMT+0", "Etc/UTC"], + ["GMT-0", "Etc/UTC"], + ["GMT0", "Etc/UTC"], + ["Greenwich", "Etc/UTC"], + ["Hongkong", "Asia/Hong_Kong"], + ["HST", "Pacific/Honolulu"], + ["Iceland", "Africa/Monrovia"], + ["Indian/Antananarivo", "Africa/Nairobi"], + ["Indian/Chagos", "Asia/Dhaka"], + ["Indian/Christmas", "Asia/Bangkok"], + ["Indian/Cocos", "Asia/Rangoon"], + ["Indian/Comoro", "Africa/Nairobi"], + ["Indian/Kerguelen", "Asia/Karachi"], + ["Indian/Mahe", "Asia/Yerevan"], + ["Indian/Maldives", "Asia/Karachi"], + ["Indian/Mauritius", "Asia/Yerevan"], + ["Indian/Mayotte", "Africa/Nairobi"], + ["Indian/Reunion", "Asia/Yerevan"], + ["Iran", "Asia/Tehran"], + ["Israel", "Asia/Jerusalem"], + ["Jamaica", "America/Bogota"], + ["Japan", "Asia/Tokyo"], + ["Kwajalein", "Pacific/Majuro"], + ["Libya", "Africa/Harare"], + ["MET", "Europe/Paris"], + ["Mexico/BajaNorte", "America/Tijuana"], + ["Mexico/BajaSur", "America/Mazatlan"], + ["Mexico/General", "America/Mexico_City"], + ["MST", "America/Phoenix"], + ["MST7MDT", "America/Denver"], + ["Navajo", "America/Denver"], + ["NZ", "Pacific/Auckland"], + ["NZ-CHAT", "Pacific/Chatham"], + ["Pacific/Apia", "Pacific/Apia"], + ["Pacific/Auckland", "Pacific/Auckland"], + ["Pacific/Bougainville", "Pacific/Noumea"], + ["Pacific/Chatham", "Pacific/Chatham"], + ["Pacific/Chuuk", "Pacific/Port_Moresby"], + ["Pacific/Easter", "America/Chicago"], + ["Pacific/Efate", "Pacific/Noumea"], + ["Pacific/Enderbury", "Pacific/Tongatapu"], + ["Pacific/Fakaofo", "Pacific/Fakaofo"], + ["Pacific/Fiji", "Pacific/Fiji"], + ["Pacific/Funafuti", "Pacific/Majuro"], + ["Pacific/Galapagos", "America/Mexico_City"], + ["Pacific/Gambier", "Pacific/Honolulu"], + ["Pacific/Guadalcanal", "Pacific/Noumea"], + ["Pacific/Guam", "Pacific/Guam"], + ["Pacific/Honolulu", "Pacific/Honolulu"], + ["Pacific/Johnston", "Pacific/Honolulu"], + ["Pacific/Kanton", "Pacific/Tongatapu"], + ["Pacific/Kiritimati", "Pacific/Apia"], + ["Pacific/Kosrae", "Pacific/Noumea"], + ["Pacific/Kwajalein", "Pacific/Majuro"], + ["Pacific/Majuro", "Pacific/Majuro"], + ["Pacific/Marquesas", "Pacific/Honolulu"], + ["Pacific/Midway", "Pacific/Midway"], + ["Pacific/Nauru", "Pacific/Majuro"], + ["Pacific/Niue", "Pacific/Midway"], + ["Pacific/Norfolk", "Pacific/Noumea"], + ["Pacific/Noumea", "Pacific/Noumea"], + ["Pacific/Pago_Pago", "Pacific/Pago_Pago"], + ["Pacific/Palau", "Asia/Yakutsk"], + ["Pacific/Pitcairn", "America/Juneau"], + ["Pacific/Pohnpei", "Pacific/Noumea"], + ["Pacific/Ponape", "Pacific/Noumea"], + ["Pacific/Port_Moresby", "Pacific/Port_Moresby"], + ["Pacific/Rarotonga", "Pacific/Honolulu"], + ["Pacific/Saipan", "Pacific/Guam"], + ["Pacific/Samoa", "Pacific/Pago_Pago"], + ["Pacific/Tahiti", "Pacific/Honolulu"], + ["Pacific/Tarawa", "Pacific/Majuro"], + ["Pacific/Tongatapu", "Pacific/Tongatapu"], + ["Pacific/Truk", "Pacific/Port_Moresby"], + ["Pacific/Wake", "Pacific/Majuro"], + ["Pacific/Wallis", "Pacific/Majuro"], + ["Pacific/Yap", "Pacific/Port_Moresby"], + ["Poland", "Europe/Warsaw"], + ["Portugal", "Europe/Lisbon"], + ["PRC", "Asia/Shanghai"], + ["PST8PDT", "America/Los_Angeles"], + ["ROC", "Asia/Taipei"], + ["ROK", "Asia/Seoul"], + ["Singapore", "Asia/Singapore"], + ["Turkey", "Europe/Istanbul"], + ["UCT", "Etc/UTC"], + ["Universal", "Etc/UTC"], + ["US/Alaska", "America/Juneau"], + ["US/Aleutian", "Pacific/Honolulu"], + ["US/Arizona", "America/Phoenix"], + ["US/Central", "America/Chicago"], + ["US/East-Indiana", "America/Indiana/Indianapolis"], + ["US/Eastern", "America/New_York"], + ["US/Hawaii", "Pacific/Honolulu"], + ["US/Indiana-Starke", "America/Indiana/Indianapolis"], + ["US/Michigan", "America/New_York"], + ["US/Mountain", "America/Denver"], + ["US/Pacific", "America/Los_Angeles"], + ["US/Samoa", "Pacific/Pago_Pago"], + ["UTC", "Etc/UTC"], + ["W-SU", "Europe/Moscow"], + ["WET", "Europe/London"], + ["Zulu", "Etc/UTC"], + ] + end end end