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