Timezones
Utility types
Here are some useful types for working with timezones by name or by GMT identifier.
type TimezoneName = 'Etc/GMT+12' | 'Etc/GMT+11' | 'Etc/GMT+2' | 'Etc/GMT-13' | 'Etc/GMT-14' | 'America/Anchorage' | 'America/Los_Angeles' | 'America/Denver' | 'America/Chicago' | 'America/New_York' | 'America/Caracas' | 'America/Buenos_Aires' | 'Canada/Atlantic' | 'Canada/Newfoundland' | 'Atlantic/Azores' | 'Europe/London' | 'Europe/Brussels' | 'Europe/Kaliningrad' | 'Europe/Moscow' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kabul' | 'Asia/Karachi' | 'Asia/Colombo' | 'Asia/Kathmandu' | 'Asia/Dhaka' | 'Asia/Yangon' | 'Asia/Bangkok' | 'Asia/Shanghai' | 'Asia/Tokyo' | 'Asia/Magadan' | 'Australia/Eucla' | 'Australia/Darwin' | 'Australia/Lord_Howe' | 'Pacific/Honolulu' | 'Pacific/Marquesas' | 'Pacific/Guam' | 'Pacific/Norfolk' | 'Pacific/Auckland' | 'Pacific/Chatham'type Timezone = 'GMT-1200' | 'GMT-1100' | 'GMT-1000' | 'GMT-0930' | 'GMT-0900' | 'GMT-0800' | 'GMT-0700' | 'GMT-0600' | 'GMT-0500' | 'GMT-0430' | 'GMT-0400' | 'GMT-0330' | 'GMT-0300' | 'GMT-0200' | 'GMT-0100' | 'GMT+0000' | 'GMT+0100' | 'GMT+0200' | 'GMT+0300' | 'GMT+0330' | 'GMT+0400' | 'GMT+0430' | 'GMT+0500' | 'GMT+0530' | 'GMT+0545' | 'GMT+0600' | 'GMT+0630' | 'GMT+0700' | 'GMT+0800' | 'GMT+0845' | 'GMT+0900' | 'GMT+0930' | 'GMT+1000' | 'GMT+1030' | 'GMT+1100' | 'GMT+1130' | 'GMT+1200' | 'GMT+1245' | 'GMT+1300' | 'GMT+1400'const timezoneToId: Record<TimezoneName, Timezone> = { 'Etc/GMT+12': 'GMT-1200', 'Etc/GMT+11': 'GMT-1100', 'Pacific/Honolulu': 'GMT-1000', 'Pacific/Marquesas': 'GMT-0930', 'America/Anchorage': 'GMT-0900', 'America/Los_Angeles': 'GMT-0800', 'America/Denver': 'GMT-0700', 'America/Chicago': 'GMT-0600', 'America/New_York': 'GMT-0500', 'America/Caracas': 'GMT-0430', 'Canada/Atlantic': 'GMT-0400', 'Canada/Newfoundland': 'GMT-0330', 'America/Buenos_Aires': 'GMT-0300', 'Etc/GMT+2': 'GMT-0200', 'Atlantic/Azores': 'GMT-0100', 'Europe/London': 'GMT+0000', 'Europe/Brussels': 'GMT+0100', 'Europe/Kaliningrad': 'GMT+0200', 'Europe/Moscow': 'GMT+0300', 'Asia/Tehran': 'GMT+0330', 'Asia/Dubai': 'GMT+0400', 'Asia/Kabul': 'GMT+0430', 'Asia/Karachi': 'GMT+0500', 'Asia/Colombo': 'GMT+0530', 'Asia/Kathmandu': 'GMT+0545', 'Asia/Dhaka': 'GMT+0600', 'Asia/Yangon': 'GMT+0630', 'Asia/Bangkok': 'GMT+0700', 'Asia/Shanghai': 'GMT+0800', 'Australia/Eucla': 'GMT+0845', 'Asia/Tokyo': 'GMT+0900', 'Australia/Darwin': 'GMT+0930', 'Pacific/Guam': 'GMT+1000', 'Australia/Lord_Howe': 'GMT+1030', 'Asia/Magadan': 'GMT+1100', 'Pacific/Norfolk': 'GMT+1130', 'Pacific/Auckland': 'GMT+1200', 'Pacific/Chatham': 'GMT+1245', 'Etc/GMT-13': 'GMT+1300', 'Etc/GMT-14': 'GMT+1400'}const timezoneNames = Object.keys(timezoneToId)