9 changed files with 441 additions and 384 deletions
			
			
		| @ -0,0 +1,397 @@ | |||||
|  | import dayjs from "dayjs"; | ||||
|  | import utc  from 'dayjs/plugin/utc' | ||||
|  | import timezone  from 'dayjs/plugin/timezone' | ||||
|  | 
 | ||||
|  | dayjs.extend(utc) | ||||
|  | dayjs.extend(timezone) | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | function getTimezoneOffset(timeZone) { | ||||
|  |     const now = new Date(); | ||||
|  |     const tzString = now.toLocaleString('en-US', { timeZone }); | ||||
|  |     const localString = now.toLocaleString('en-US'); | ||||
|  |     const diff = (Date.parse(localString) - Date.parse(tzString)) / 3600000; | ||||
|  |     const offset = diff + now.getTimezoneOffset() / 60; | ||||
|  |     return -offset; | ||||
|  | } | ||||
|  | 
 | ||||
|  | // From: https://stackoverflow.com/questions/38399465/how-to-get-list-of-all-timezones-in-javascript
 | ||||
|  | const aryIannaTimeZones = [ | ||||
|  |     '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' | ||||
|  | ]; | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | export function timezoneList() { | ||||
|  |     let result = []; | ||||
|  | 
 | ||||
|  |     for (let timezone of aryIannaTimeZones) { | ||||
|  | 
 | ||||
|  |         let display = dayjs().tz(timezone).format("Z"); | ||||
|  | 
 | ||||
|  |         result.push({ | ||||
|  |             name: `(UTC${display}) ${timezone}`, | ||||
|  |             value: timezone, | ||||
|  |             time: getTimezoneOffset(timezone), | ||||
|  |         }) | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     result.sort((a, b) => { | ||||
|  |         if (a.time > b.time) { | ||||
|  |             return 1; | ||||
|  |         } else if (b.time > a.time) { | ||||
|  |             return -1; | ||||
|  |         } else { | ||||
|  |             return 0; | ||||
|  |         } | ||||
|  |     }) | ||||
|  | 
 | ||||
|  |     return result; | ||||
|  | }; | ||||
|  | 
 | ||||
					Loading…
					
					
				
		Reference in new issue