From 76a180f627fab0de5f4d63742f6f9d3520db1909 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Tue, 23 Nov 2021 16:46:18 -0600 Subject: [PATCH] Source timezones from GeoNames --- .gitignore | 3 +- src/app/services/timezone.service.ts | 803 +++++++++++++++------------ 2 files changed, 445 insertions(+), 361 deletions(-) diff --git a/.gitignore b/.gitignore index e14d2bf..5e73d99 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,5 @@ npm-debug.log* /.vscode /coverage /dist -/node_modules \ No newline at end of file +/node_modules +.angular/ \ No newline at end of file diff --git a/src/app/services/timezone.service.ts b/src/app/services/timezone.service.ts index 80d281e..1ab3bdc 100644 --- a/src/app/services/timezone.service.ts +++ b/src/app/services/timezone.service.ts @@ -5,382 +5,465 @@ import { Injectable } from '@angular/core'; }) export class TimezoneService { - // found at have not done any research as to it's completeness https://stackoverflow.com/questions/38399465/how-to-get-list-of-all-timezones-in-javascript - timezones: string[] = [ - 'Europe/Andorra', - 'Asia/Dubai', - 'Asia/Kabul', - 'Europe/Tirane', - 'Asia/Yerevan', - 'Antarctica/Casey', - 'Antarctica/Davis', - 'Antarctica/DumontDUrville', // https://bugs.chromium.org/p/chromium/issues/detail?id=928068 - 'Antarctica/Mawson', - 'Antarctica/Palmer', - 'Antarctica/Rothera', - 'Antarctica/Syowa', - 'Antarctica/Troll', - 'Antarctica/Vostok', - 'America/Argentina/Buenos_Aires', - 'America/Argentina/Cordoba', - 'America/Argentina/Salta', - 'America/Argentina/Jujuy', - 'America/Argentina/Tucuman', - 'America/Argentina/Catamarca', - 'America/Argentina/La_Rioja', - 'America/Argentina/San_Juan', - 'America/Argentina/Mendoza', - 'America/Argentina/San_Luis', - 'America/Argentina/Rio_Gallegos', - 'America/Argentina/Ushuaia', - 'Pacific/Pago_Pago', - 'Europe/Vienna', - 'Australia/Lord_Howe', - 'Antarctica/Macquarie', - 'Australia/Hobart', - 'Australia/Currie', - 'Australia/Melbourne', - 'Australia/Sydney', - 'Australia/Broken_Hill', - 'Australia/Brisbane', - 'Australia/Lindeman', - 'Australia/Adelaide', - 'Australia/Darwin', - 'Australia/Perth', - 'Australia/Eucla', - 'Asia/Baku', - 'America/Barbados', - 'Asia/Dhaka', - 'Europe/Brussels', - 'Europe/Sofia', - 'Atlantic/Bermuda', - 'Asia/Brunei', - 'America/La_Paz', - 'America/Noronha', - 'America/Belem', - 'America/Fortaleza', - 'America/Recife', - 'America/Araguaina', - 'America/Maceio', - 'America/Bahia', - 'America/Sao_Paulo', - 'America/Campo_Grande', - 'America/Cuiaba', - 'America/Santarem', - 'America/Porto_Velho', - 'America/Boa_Vista', - 'America/Manaus', - 'America/Eirunepe', - 'America/Rio_Branco', - 'America/Nassau', - 'Asia/Thimphu', - 'Europe/Minsk', - 'America/Belize', - 'America/St_Johns', - 'America/Halifax', - 'America/Glace_Bay', - 'America/Moncton', - 'America/Goose_Bay', - 'America/Blanc-Sablon', - 'America/Toronto', - 'America/Nipigon', - 'America/Thunder_Bay', - 'America/Iqaluit', - 'America/Pangnirtung', - 'America/Atikokan', - 'America/Winnipeg', - 'America/Rainy_River', - 'America/Resolute', - 'America/Rankin_Inlet', - 'America/Regina', - 'America/Swift_Current', - 'America/Edmonton', - 'America/Cambridge_Bay', - 'America/Yellowknife', - 'America/Inuvik', - 'America/Creston', - 'America/Dawson_Creek', - 'America/Fort_Nelson', - 'America/Vancouver', - 'America/Whitehorse', - 'America/Dawson', - 'Indian/Cocos', - 'Europe/Zurich', - 'Africa/Abidjan', - 'Pacific/Rarotonga', - 'America/Santiago', - 'America/Punta_Arenas', - 'Pacific/Easter', - 'Asia/Shanghai', - 'Asia/Urumqi', - 'America/Bogota', - 'America/Costa_Rica', - 'America/Havana', - 'Atlantic/Cape_Verde', - 'America/Curacao', - 'Indian/Christmas', - 'Asia/Nicosia', - 'Asia/Famagusta', - 'Europe/Prague', - 'Europe/Berlin', - 'Europe/Copenhagen', - 'America/Santo_Domingo', - 'Africa/Algiers', - 'America/Guayaquil', - 'Pacific/Galapagos', - 'Europe/Tallinn', - 'Africa/Cairo', - 'Africa/El_Aaiun', - 'Europe/Madrid', - 'Africa/Ceuta', - 'Atlantic/Canary', - 'Europe/Helsinki', - 'Pacific/Fiji', - 'Atlantic/Stanley', - 'Pacific/Chuuk', - 'Pacific/Pohnpei', - 'Pacific/Kosrae', - 'Atlantic/Faroe', - 'Europe/Paris', - 'Europe/London', - 'Asia/Tbilisi', - 'America/Cayenne', - 'Africa/Accra', - 'Europe/Gibraltar', - 'America/Godthab', - 'America/Danmarkshavn', - 'America/Scoresbysund', - 'America/Thule', - 'Europe/Athens', - 'Atlantic/South_Georgia', - 'America/Guatemala', - 'Pacific/Guam', - 'Africa/Bissau', - 'America/Guyana', - 'Asia/Hong_Kong', - 'America/Tegucigalpa', - 'America/Port-au-Prince', - 'Europe/Budapest', - 'Asia/Jakarta', - 'Asia/Pontianak', - 'Asia/Makassar', - 'Asia/Jayapura', - 'Europe/Dublin', - 'Asia/Jerusalem', - 'Asia/Kolkata', - 'Indian/Chagos', - 'Asia/Baghdad', - 'Asia/Tehran', - 'Atlantic/Reykjavik', - 'Europe/Rome', - 'America/Jamaica', - 'Asia/Amman', - 'Asia/Tokyo', - 'Africa/Nairobi', - 'Asia/Bishkek', - 'Pacific/Tarawa', - 'Pacific/Enderbury', - 'Pacific/Kiritimati', - 'Asia/Pyongyang', - 'Asia/Seoul', - 'Asia/Almaty', - 'Asia/Qyzylorda', - 'Asia/Qostanay', // https://bugs.chromium.org/p/chromium/issues/detail?id=928068 - 'Asia/Aqtobe', - 'Asia/Aqtau', - 'Asia/Atyrau', - 'Asia/Oral', - 'Asia/Beirut', - 'Asia/Colombo', - 'Africa/Monrovia', - 'Europe/Vilnius', - 'Europe/Luxembourg', - 'Europe/Riga', - 'Africa/Tripoli', - 'Africa/Casablanca', - 'Europe/Monaco', - 'Europe/Chisinau', - 'Pacific/Majuro', - 'Pacific/Kwajalein', - 'Asia/Yangon', - 'Asia/Ulaanbaatar', - 'Asia/Hovd', - 'Asia/Choibalsan', - 'Asia/Macau', - 'America/Martinique', - 'Europe/Malta', - 'Indian/Mauritius', - 'Indian/Maldives', - 'America/Mexico_City', - 'America/Cancun', - 'America/Merida', - 'America/Monterrey', - 'America/Matamoros', - 'America/Mazatlan', - 'America/Chihuahua', - 'America/Ojinaga', - 'America/Hermosillo', - 'America/Tijuana', - 'America/Bahia_Banderas', - 'Asia/Kuala_Lumpur', - 'Asia/Kuching', - 'Africa/Maputo', - 'Africa/Windhoek', - 'Pacific/Noumea', - 'Pacific/Norfolk', - 'Africa/Lagos', - 'America/Managua', - 'Europe/Amsterdam', - 'Europe/Oslo', - 'Asia/Kathmandu', - 'Pacific/Nauru', - 'Pacific/Niue', - 'Pacific/Auckland', - 'Pacific/Chatham', - 'America/Panama', - 'America/Lima', - 'Pacific/Tahiti', - 'Pacific/Marquesas', - 'Pacific/Gambier', - 'Pacific/Port_Moresby', - 'Pacific/Bougainville', - 'Asia/Manila', - 'Asia/Karachi', - 'Europe/Warsaw', - 'America/Miquelon', - 'Pacific/Pitcairn', - 'America/Puerto_Rico', - 'Asia/Gaza', - 'Asia/Hebron', - 'Europe/Lisbon', - 'Atlantic/Madeira', - 'Atlantic/Azores', - 'Pacific/Palau', - 'America/Asuncion', - 'Asia/Qatar', - 'Indian/Reunion', - 'Europe/Bucharest', - 'Europe/Belgrade', - 'Europe/Kaliningrad', - 'Europe/Moscow', - 'Europe/Simferopol', - 'Europe/Kirov', - 'Europe/Astrakhan', - 'Europe/Volgograd', - 'Europe/Saratov', - 'Europe/Ulyanovsk', - 'Europe/Samara', - 'Asia/Yekaterinburg', - 'Asia/Omsk', - 'Asia/Novosibirsk', - 'Asia/Barnaul', - 'Asia/Tomsk', - 'Asia/Novokuznetsk', - 'Asia/Krasnoyarsk', - 'Asia/Irkutsk', - 'Asia/Chita', - 'Asia/Yakutsk', - 'Asia/Khandyga', - 'Asia/Vladivostok', - 'Asia/Ust-Nera', - 'Asia/Magadan', - 'Asia/Sakhalin', - 'Asia/Srednekolymsk', - 'Asia/Kamchatka', - 'Asia/Anadyr', - 'Asia/Riyadh', - 'Pacific/Guadalcanal', - 'Indian/Mahe', - 'Africa/Khartoum', - 'Europe/Stockholm', - 'Asia/Singapore', - 'America/Paramaribo', - 'Africa/Juba', - 'Africa/Sao_Tome', - 'America/El_Salvador', - 'Asia/Damascus', - 'America/Grand_Turk', - 'Africa/Ndjamena', - 'Indian/Kerguelen', - 'Asia/Bangkok', - 'Asia/Dushanbe', - 'Pacific/Fakaofo', - 'Asia/Dili', - 'Asia/Ashgabat', - 'Africa/Tunis', - 'Pacific/Tongatapu', - 'Europe/Istanbul', - 'America/Port_of_Spain', - 'Pacific/Funafuti', - 'Asia/Taipei', - 'Europe/Kiev', - 'Europe/Uzhgorod', - 'Europe/Zaporozhye', - 'Pacific/Wake', - 'America/New_York', - 'America/Detroit', - 'America/Kentucky/Louisville', - 'America/Kentucky/Monticello', - 'America/Indiana/Indianapolis', - 'America/Indiana/Vincennes', - 'America/Indiana/Winamac', - 'America/Indiana/Marengo', - 'America/Indiana/Petersburg', - 'America/Indiana/Vevay', - 'America/Chicago', - 'America/Indiana/Tell_City', - 'America/Indiana/Knox', - 'America/Menominee', - 'America/North_Dakota/Center', - 'America/North_Dakota/New_Salem', - 'America/North_Dakota/Beulah', - 'America/Denver', - 'America/Boise', - 'America/Phoenix', - 'America/Los_Angeles', - 'America/Anchorage', - 'America/Juneau', - 'America/Sitka', - 'America/Metlakatla', - 'America/Yakutat', - 'America/Nome', - 'America/Adak', - 'Pacific/Honolulu', - 'America/Montevideo', - 'Asia/Samarkand', - 'Asia/Tashkent', - 'America/Caracas', - 'Asia/Ho_Chi_Minh', - 'Pacific/Efate', - 'Pacific/Wallis', - 'Pacific/Apia', - 'Africa/Johannesburg' - ] + timezones: string[] = [ + 'Africa/Abidjan', + 'Africa/Accra', + 'Africa/Addis_Ababa', + 'Africa/Algiers', + 'Africa/Asmara', + 'Africa/Bamako', + 'Africa/Bangui', + 'Africa/Banjul', + 'Africa/Bissau', + 'Africa/Blantyre', + 'Africa/Brazzaville', + 'Africa/Bujumbura', + 'Africa/Cairo', + 'Africa/Casablanca', + 'Africa/Ceuta', + 'Africa/Conakry', + 'Africa/Dakar', + 'Africa/Dar_es_Salaam', + 'Africa/Djibouti', + 'Africa/Douala', + 'Africa/El_Aaiun', + 'Africa/Freetown', + 'Africa/Gaborone', + 'Africa/Harare', + 'Africa/Johannesburg', + 'Africa/Juba', + 'Africa/Kampala', + 'Africa/Khartoum', + 'Africa/Kigali', + 'Africa/Kinshasa', + 'Africa/Lagos', + 'Africa/Libreville', + 'Africa/Lome', + 'Africa/Luanda', + 'Africa/Lubumbashi', + 'Africa/Lusaka', + 'Africa/Malabo', + 'Africa/Maputo', + 'Africa/Maseru', + 'Africa/Mbabane', + 'Africa/Mogadishu', + 'Africa/Monrovia', + 'Africa/Nairobi', + 'Africa/Ndjamena', + 'Africa/Niamey', + 'Africa/Nouakchott', + 'Africa/Ouagadougou', + 'Africa/Porto-Novo', + 'Africa/Sao_Tome', + 'Africa/Tripoli', + 'Africa/Tunis', + 'Africa/Windhoek', + 'America/Adak', + 'America/Anchorage', + 'America/Anguilla', + 'America/Antigua', + 'America/Araguaina', + 'America/Argentina/Buenos_Aires', + 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja', + 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos', + 'America/Argentina/Salta', + 'America/Argentina/San_Juan', + 'America/Argentina/San_Luis', + 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia', + 'America/Aruba', + 'America/Asuncion', + 'America/Atikokan', + 'America/Bahia', + 'America/Bahia_Banderas', + 'America/Barbados', + 'America/Belem', + 'America/Belize', + 'America/Blanc-Sablon', + 'America/Boa_Vista', + 'America/Bogota', + 'America/Boise', + 'America/Cambridge_Bay', + 'America/Campo_Grande', + 'America/Cancun', + 'America/Caracas', + 'America/Cayenne', + 'America/Cayman', + 'America/Chicago', + 'America/Chihuahua', + 'America/Costa_Rica', + 'America/Creston', + 'America/Cuiaba', + 'America/Curacao', + 'America/Danmarkshavn', + 'America/Dawson', + 'America/Dawson_Creek', + 'America/Denver', + 'America/Detroit', + 'America/Dominica', + 'America/Edmonton', + 'America/Eirunepe', + 'America/El_Salvador', + 'America/Fort_Nelson', + 'America/Fortaleza', + 'America/Glace_Bay', + 'America/Goose_Bay', + 'America/Grand_Turk', + 'America/Grenada', + 'America/Guadeloupe', + 'America/Guatemala', + 'America/Guayaquil', + 'America/Guyana', + 'America/Halifax', + 'America/Havana', + 'America/Hermosillo', + 'America/Indiana/Indianapolis', + 'America/Indiana/Knox', + 'America/Indiana/Marengo', + 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City', + 'America/Indiana/Vevay', + 'America/Indiana/Vincennes', + 'America/Indiana/Winamac', + 'America/Inuvik', + 'America/Iqaluit', + 'America/Jamaica', + 'America/Juneau', + 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello', + 'America/Kralendijk', + 'America/La_Paz', + 'America/Lima', + 'America/Los_Angeles', + 'America/Lower_Princes', + 'America/Maceio', + 'America/Managua', + 'America/Manaus', + 'America/Marigot', + 'America/Martinique', + 'America/Matamoros', + 'America/Mazatlan', + 'America/Menominee', + 'America/Merida', + 'America/Metlakatla', + 'America/Mexico_City', + 'America/Miquelon', + 'America/Moncton', + 'America/Monterrey', + 'America/Montevideo', + 'America/Montserrat', + 'America/Nassau', + 'America/New_York', + 'America/Nipigon', + 'America/Nome', + 'America/Noronha', + 'America/North_Dakota/Beulah', + 'America/North_Dakota/Center', + 'America/North_Dakota/New_Salem', + 'America/Nuuk', + 'America/Ojinaga', + 'America/Panama', + 'America/Pangnirtung', + 'America/Paramaribo', + 'America/Phoenix', + 'America/Port-au-Prince', + 'America/Port_of_Spain', + 'America/Porto_Velho', + 'America/Puerto_Rico', + 'America/Punta_Arenas', + 'America/Rainy_River', + 'America/Rankin_Inlet', + 'America/Recife', + 'America/Regina', + 'America/Resolute', + 'America/Rio_Branco', + 'America/Santarem', + 'America/Santiago', + 'America/Santo_Domingo', + 'America/Sao_Paulo', + 'America/Scoresbysund', + 'America/Sitka', + 'America/St_Barthelemy', + 'America/St_Johns', + 'America/St_Kitts', + 'America/St_Lucia', + 'America/St_Thomas', + 'America/St_Vincent', + 'America/Swift_Current', + 'America/Tegucigalpa', + 'America/Thule', + 'America/Thunder_Bay', + 'America/Tijuana', + 'America/Toronto', + 'America/Tortola', + 'America/Vancouver', + 'America/Whitehorse', + 'America/Winnipeg', + 'America/Yakutat', + 'America/Yellowknife', + 'Antarctica/Casey', + 'Antarctica/Davis', + 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie', + 'Antarctica/Mawson', + 'Antarctica/McMurdo', + 'Antarctica/Palmer', + 'Antarctica/Rothera', + 'Antarctica/Syowa', + 'Antarctica/Troll', + 'Antarctica/Vostok', + 'Arctic/Longyearbyen', + 'Asia/Aden', + 'Asia/Almaty', + 'Asia/Amman', + 'Asia/Anadyr', + 'Asia/Aqtau', + 'Asia/Aqtobe', + 'Asia/Ashgabat', + 'Asia/Atyrau', + 'Asia/Baghdad', + 'Asia/Bahrain', + 'Asia/Baku', + 'Asia/Bangkok', + 'Asia/Barnaul', + 'Asia/Beirut', + 'Asia/Bishkek', + 'Asia/Brunei', + 'Asia/Chita', + 'Asia/Choibalsan', + 'Asia/Colombo', + 'Asia/Damascus', + 'Asia/Dhaka', + 'Asia/Dili', + 'Asia/Dubai', + 'Asia/Dushanbe', + 'Asia/Famagusta', + 'Asia/Gaza', + 'Asia/Hebron', + 'Asia/Ho_Chi_Minh', + 'Asia/Hong_Kong', + 'Asia/Hovd', + 'Asia/Irkutsk', + 'Asia/Jakarta', + 'Asia/Jayapura', + 'Asia/Jerusalem', + 'Asia/Kabul', + 'Asia/Kamchatka', + 'Asia/Karachi', + 'Asia/Kathmandu', + 'Asia/Khandyga', + 'Asia/Kolkata', + 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur', + 'Asia/Kuching', + 'Asia/Kuwait', + 'Asia/Macau', + 'Asia/Magadan', + 'Asia/Makassar', + 'Asia/Manila', + 'Asia/Muscat', + 'Asia/Nicosia', + 'Asia/Novokuznetsk', + 'Asia/Novosibirsk', + 'Asia/Omsk', + 'Asia/Oral', + 'Asia/Phnom_Penh', + 'Asia/Pontianak', + 'Asia/Pyongyang', + 'Asia/Qatar', + 'Asia/Qostanay', + 'Asia/Qyzylorda', + 'Asia/Riyadh', + 'Asia/Sakhalin', + 'Asia/Samarkand', + 'Asia/Seoul', + 'Asia/Shanghai', + 'Asia/Singapore', + 'Asia/Srednekolymsk', + 'Asia/Taipei', + 'Asia/Tashkent', + 'Asia/Tbilisi', + 'Asia/Tehran', + 'Asia/Thimphu', + 'Asia/Tokyo', + 'Asia/Tomsk', + 'Asia/Ulaanbaatar', + 'Asia/Urumqi', + 'Asia/Ust-Nera', + 'Asia/Vientiane', + 'Asia/Vladivostok', + 'Asia/Yakutsk', + 'Asia/Yangon', + 'Asia/Yekaterinburg', + 'Asia/Yerevan', + 'Atlantic/Azores', + 'Atlantic/Bermuda', + 'Atlantic/Canary', + 'Atlantic/Cape_Verde', + 'Atlantic/Faroe', + 'Atlantic/Madeira', + 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia', + 'Atlantic/St_Helena', + 'Atlantic/Stanley', + 'Australia/Adelaide', + 'Australia/Brisbane', + 'Australia/Broken_Hill', + 'Australia/Darwin', + 'Australia/Eucla', + 'Australia/Hobart', + 'Australia/Lindeman', + 'Australia/Lord_Howe', + 'Australia/Melbourne', + 'Australia/Perth', + 'Australia/Sydney', + 'Europe/Amsterdam', + 'Europe/Andorra', + 'Europe/Astrakhan', + 'Europe/Athens', + 'Europe/Belgrade', + 'Europe/Berlin', + 'Europe/Bratislava', + 'Europe/Brussels', + 'Europe/Bucharest', + 'Europe/Budapest', + 'Europe/Busingen', + 'Europe/Chisinau', + 'Europe/Copenhagen', + 'Europe/Dublin', + 'Europe/Gibraltar', + 'Europe/Guernsey', + 'Europe/Helsinki', + 'Europe/Isle_of_Man', + 'Europe/Istanbul', + 'Europe/Jersey', + 'Europe/Kaliningrad', + 'Europe/Kiev', + 'Europe/Kirov', + 'Europe/Lisbon', + 'Europe/Ljubljana', + 'Europe/London', + 'Europe/Luxembourg', + 'Europe/Madrid', + 'Europe/Malta', + 'Europe/Mariehamn', + 'Europe/Minsk', + 'Europe/Monaco', + 'Europe/Moscow', + 'Europe/Oslo', + 'Europe/Paris', + 'Europe/Podgorica', + 'Europe/Prague', + 'Europe/Riga', + 'Europe/Rome', + 'Europe/Samara', + 'Europe/San_Marino', + 'Europe/Sarajevo', + 'Europe/Saratov', + 'Europe/Simferopol', + 'Europe/Skopje', + 'Europe/Sofia', + 'Europe/Stockholm', + 'Europe/Tallinn', + 'Europe/Tirane', + 'Europe/Ulyanovsk', + 'Europe/Uzhgorod', + 'Europe/Vaduz', + 'Europe/Vatican', + 'Europe/Vienna', + 'Europe/Vilnius', + 'Europe/Volgograd', + 'Europe/Warsaw', + 'Europe/Zagreb', + 'Europe/Zaporozhye', + 'Europe/Zurich', + 'Indian/Antananarivo', + 'Indian/Chagos', + 'Indian/Christmas', + 'Indian/Cocos', + 'Indian/Comoro', + 'Indian/Kerguelen', + 'Indian/Mahe', + 'Indian/Maldives', + 'Indian/Mauritius', + 'Indian/Mayotte', + 'Indian/Reunion', + 'Pacific/Apia', + 'Pacific/Auckland', + 'Pacific/Bougainville', + 'Pacific/Chatham', + 'Pacific/Chuuk', + 'Pacific/Easter', + 'Pacific/Efate', + 'Pacific/Fakaofo', + 'Pacific/Fiji', + 'Pacific/Funafuti', + 'Pacific/Galapagos', + 'Pacific/Gambier', + 'Pacific/Guadalcanal', + 'Pacific/Guam', + 'Pacific/Honolulu', + // 'Pacific/Kanton', ?? Why is this not valid? + 'Pacific/Kiritimati', + 'Pacific/Kosrae', + 'Pacific/Kwajalein', + 'Pacific/Majuro', + 'Pacific/Marquesas', + 'Pacific/Midway', + 'Pacific/Nauru', + 'Pacific/Niue', + 'Pacific/Norfolk', + 'Pacific/Noumea', + 'Pacific/Pago_Pago', + 'Pacific/Palau', + 'Pacific/Pitcairn', + 'Pacific/Pohnpei', + 'Pacific/Port_Moresby', + 'Pacific/Rarotonga', + 'Pacific/Saipan', + 'Pacific/Tahiti', + 'Pacific/Tarawa', + 'Pacific/Tongatapu', + 'Pacific/Wake', + 'Pacific/Wallis', + ] constructor() { } - public getTimezones() : string[] { + public getTimezones(): string[] { return this.timezones } - public getTimeForTimezone(date: Date, timezone: string) : Date { - return new Date(date.toLocaleString("en-US", {timeZone: timezone})); + public getTimeForTimezone(date: Date, timezone: string): Date | null { + try { + return new Date(date.toLocaleString("en-US", { timeZone: timezone })); + } catch (error) { + console.log(`Timezone '${timezone}' not recognized?`) + return null; + } } - public getCurrentTimeInTimezones(timezones: string[]) : { timezone: string; date: Date; }[] { + public getCurrentTimeInTimezones(timezones: string[]): { timezone: string; date: Date; }[] { var now = new Date(); var dates: { timezone: string; date: Date; }[] = []; this.timezones.forEach(element => { - dates.push({ timezone: element, date: this.getTimeForTimezone(now,element)}) + var date = this.getTimeForTimezone(now,element); + if(date != null){ + dates.push({ timezone: element, date: date }) + } }); - dates.sort((a,b)=>{ - if(a.date>b.date){ + dates.sort((a, b) => { + if (a.date > b.date) { return 1; - }else if (a.date