timezones.ts 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221
  1. // https://github.com/dmfilipenko/timezones.json/blob/master/timezones.json
  2. export interface Timezone {
  3. value: string
  4. abbr: string
  5. offset: number
  6. isdst: boolean
  7. text: string
  8. utc: string[]
  9. }
  10. export const ALL_TIMEZONES: Timezone[] = [
  11. {
  12. value: 'Dateline Standard Time',
  13. abbr: 'DST',
  14. offset: -12,
  15. isdst: false,
  16. text: '(UTC-12:00) International Date Line West',
  17. utc: ['Etc/GMT+12'],
  18. },
  19. {
  20. value: 'UTC-11',
  21. abbr: 'U',
  22. offset: -11,
  23. isdst: false,
  24. text: '(UTC-11:00) Coordinated Universal Time-11',
  25. utc: ['Etc/GMT+11', 'Pacific/Midway', 'Pacific/Niue', 'Pacific/Pago_Pago'],
  26. },
  27. {
  28. value: 'Hawaiian Standard Time',
  29. abbr: 'HST',
  30. offset: -10,
  31. isdst: false,
  32. text: '(UTC-10:00) Hawaii',
  33. utc: [
  34. 'Etc/GMT+10',
  35. 'Pacific/Honolulu',
  36. 'Pacific/Johnston',
  37. 'Pacific/Rarotonga',
  38. 'Pacific/Tahiti',
  39. ],
  40. },
  41. {
  42. value: 'Alaskan Standard Time',
  43. abbr: 'AKDT',
  44. offset: -8,
  45. isdst: true,
  46. text: '(UTC-09:00) Alaska',
  47. utc: [
  48. 'America/Anchorage',
  49. 'America/Juneau',
  50. 'America/Nome',
  51. 'America/Sitka',
  52. 'America/Yakutat',
  53. ],
  54. },
  55. {
  56. value: 'Pacific Standard Time (Mexico)',
  57. abbr: 'PDT',
  58. offset: -7,
  59. isdst: true,
  60. text: '(UTC-08:00) Baja California',
  61. utc: ['America/Santa_Isabel'],
  62. },
  63. {
  64. value: 'Pacific Daylight Time',
  65. abbr: 'PDT',
  66. offset: -7,
  67. isdst: true,
  68. text: '(UTC-07:00) Pacific Daylight Time (US & Canada)',
  69. utc: ['America/Los_Angeles', 'America/Tijuana', 'America/Vancouver'],
  70. },
  71. {
  72. value: 'Pacific Standard Time',
  73. abbr: 'PST',
  74. offset: -8,
  75. isdst: false,
  76. text: '(UTC-08:00) Pacific Standard Time (US & Canada)',
  77. utc: ['America/Los_Angeles', 'America/Tijuana', 'America/Vancouver', 'PST8PDT'],
  78. },
  79. {
  80. value: 'US Mountain Standard Time',
  81. abbr: 'UMST',
  82. offset: -7,
  83. isdst: false,
  84. text: '(UTC-07:00) Arizona',
  85. utc: [
  86. 'America/Creston',
  87. 'America/Dawson',
  88. 'America/Dawson_Creek',
  89. 'America/Hermosillo',
  90. 'America/Phoenix',
  91. 'America/Whitehorse',
  92. 'Etc/GMT+7',
  93. ],
  94. },
  95. {
  96. value: 'Mountain Standard Time (Mexico)',
  97. abbr: 'MDT',
  98. offset: -6,
  99. isdst: true,
  100. text: '(UTC-07:00) Chihuahua, La Paz, Mazatlan',
  101. utc: ['America/Chihuahua', 'America/Mazatlan'],
  102. },
  103. {
  104. value: 'Mountain Standard Time',
  105. abbr: 'MDT',
  106. offset: -6,
  107. isdst: true,
  108. text: '(UTC-07:00) Mountain Time (US & Canada)',
  109. utc: [
  110. 'America/Boise',
  111. 'America/Cambridge_Bay',
  112. 'America/Denver',
  113. 'America/Edmonton',
  114. 'America/Inuvik',
  115. 'America/Ojinaga',
  116. 'America/Yellowknife',
  117. 'MST7MDT',
  118. ],
  119. },
  120. {
  121. value: 'Central America Standard Time',
  122. abbr: 'CAST',
  123. offset: -6,
  124. isdst: false,
  125. text: '(UTC-06:00) Central America',
  126. utc: [
  127. 'America/Belize',
  128. 'America/Costa_Rica',
  129. 'America/El_Salvador',
  130. 'America/Guatemala',
  131. 'America/Managua',
  132. 'America/Tegucigalpa',
  133. 'Etc/GMT+6',
  134. 'Pacific/Galapagos',
  135. ],
  136. },
  137. {
  138. value: 'Central Standard Time',
  139. abbr: 'CDT',
  140. offset: -5,
  141. isdst: true,
  142. text: '(UTC-06:00) Central Time (US & Canada)',
  143. utc: [
  144. 'America/Chicago',
  145. 'America/Indiana/Knox',
  146. 'America/Indiana/Tell_City',
  147. 'America/Matamoros',
  148. 'America/Menominee',
  149. 'America/North_Dakota/Beulah',
  150. 'America/North_Dakota/Center',
  151. 'America/North_Dakota/New_Salem',
  152. 'America/Rainy_River',
  153. 'America/Rankin_Inlet',
  154. 'America/Resolute',
  155. 'America/Winnipeg',
  156. 'CST6CDT',
  157. ],
  158. },
  159. {
  160. value: 'Central Standard Time (Mexico)',
  161. abbr: 'CDT',
  162. offset: -5,
  163. isdst: true,
  164. text: '(UTC-06:00) Guadalajara, Mexico City, Monterrey',
  165. utc: [
  166. 'America/Bahia_Banderas',
  167. 'America/Cancun',
  168. 'America/Merida',
  169. 'America/Mexico_City',
  170. 'America/Monterrey',
  171. ],
  172. },
  173. {
  174. value: 'Canada Central Standard Time',
  175. abbr: 'CCST',
  176. offset: -6,
  177. isdst: false,
  178. text: '(UTC-06:00) Saskatchewan',
  179. utc: ['America/Regina', 'America/Swift_Current'],
  180. },
  181. {
  182. value: 'SA Pacific Standard Time',
  183. abbr: 'SPST',
  184. offset: -5,
  185. isdst: false,
  186. text: '(UTC-05:00) Bogota, Lima, Quito',
  187. utc: [
  188. 'America/Bogota',
  189. 'America/Cayman',
  190. 'America/Coral_Harbour',
  191. 'America/Eirunepe',
  192. 'America/Guayaquil',
  193. 'America/Jamaica',
  194. 'America/Lima',
  195. 'America/Panama',
  196. 'America/Rio_Branco',
  197. 'Etc/GMT+5',
  198. ],
  199. },
  200. {
  201. value: 'Eastern Standard Time',
  202. abbr: 'EST',
  203. offset: -5,
  204. isdst: false,
  205. text: '(UTC-05:00) Eastern Time (US & Canada)',
  206. utc: [
  207. 'America/Detroit',
  208. 'America/Havana',
  209. 'America/Indiana/Petersburg',
  210. 'America/Indiana/Vincennes',
  211. 'America/Indiana/Winamac',
  212. 'America/Iqaluit',
  213. 'America/Kentucky/Monticello',
  214. 'America/Louisville',
  215. 'America/Montreal',
  216. 'America/Nassau',
  217. 'America/New_York',
  218. 'America/Nipigon',
  219. 'America/Pangnirtung',
  220. 'America/Port-au-Prince',
  221. 'America/Thunder_Bay',
  222. 'America/Toronto',
  223. ],
  224. },
  225. {
  226. value: 'Eastern Daylight Time',
  227. abbr: 'EDT',
  228. offset: -4,
  229. isdst: true,
  230. text: '(UTC-04:00) Eastern Daylight Time (US & Canada)',
  231. utc: [
  232. 'America/Detroit',
  233. 'America/Havana',
  234. 'America/Indiana/Petersburg',
  235. 'America/Indiana/Vincennes',
  236. 'America/Indiana/Winamac',
  237. 'America/Iqaluit',
  238. 'America/Kentucky/Monticello',
  239. 'America/Louisville',
  240. 'America/Montreal',
  241. 'America/Nassau',
  242. 'America/New_York',
  243. 'America/Nipigon',
  244. 'America/Pangnirtung',
  245. 'America/Port-au-Prince',
  246. 'America/Thunder_Bay',
  247. 'America/Toronto',
  248. ],
  249. },
  250. {
  251. value: 'US Eastern Standard Time',
  252. abbr: 'UEDT',
  253. offset: -5,
  254. isdst: false,
  255. text: '(UTC-05:00) Indiana (East)',
  256. utc: ['America/Indiana/Marengo', 'America/Indiana/Vevay', 'America/Indianapolis'],
  257. },
  258. {
  259. value: 'Venezuela Standard Time',
  260. abbr: 'VST',
  261. offset: -4.5,
  262. isdst: false,
  263. text: '(UTC-04:30) Caracas',
  264. utc: ['America/Caracas'],
  265. },
  266. {
  267. value: 'Paraguay Standard Time',
  268. abbr: 'PYT',
  269. offset: -4,
  270. isdst: false,
  271. text: '(UTC-04:00) Asuncion',
  272. utc: ['America/Asuncion'],
  273. },
  274. {
  275. value: 'Atlantic Standard Time',
  276. abbr: 'ADT',
  277. offset: -3,
  278. isdst: true,
  279. text: '(UTC-04:00) Atlantic Time (Canada)',
  280. utc: [
  281. 'America/Glace_Bay',
  282. 'America/Goose_Bay',
  283. 'America/Halifax',
  284. 'America/Moncton',
  285. 'America/Thule',
  286. 'Atlantic/Bermuda',
  287. ],
  288. },
  289. {
  290. value: 'Central Brazilian Standard Time',
  291. abbr: 'CBST',
  292. offset: -4,
  293. isdst: false,
  294. text: '(UTC-04:00) Cuiaba',
  295. utc: ['America/Campo_Grande', 'America/Cuiaba'],
  296. },
  297. {
  298. value: 'SA Western Standard Time',
  299. abbr: 'SWST',
  300. offset: -4,
  301. isdst: false,
  302. text: '(UTC-04:00) Georgetown, La Paz, Manaus, San Juan',
  303. utc: [
  304. 'America/Anguilla',
  305. 'America/Antigua',
  306. 'America/Aruba',
  307. 'America/Barbados',
  308. 'America/Blanc-Sablon',
  309. 'America/Boa_Vista',
  310. 'America/Curacao',
  311. 'America/Dominica',
  312. 'America/Grand_Turk',
  313. 'America/Grenada',
  314. 'America/Guadeloupe',
  315. 'America/Guyana',
  316. 'America/Kralendijk',
  317. 'America/La_Paz',
  318. 'America/Lower_Princes',
  319. 'America/Manaus',
  320. 'America/Marigot',
  321. 'America/Martinique',
  322. 'America/Montserrat',
  323. 'America/Port_of_Spain',
  324. 'America/Porto_Velho',
  325. 'America/Puerto_Rico',
  326. 'America/Santo_Domingo',
  327. 'America/St_Barthelemy',
  328. 'America/St_Kitts',
  329. 'America/St_Lucia',
  330. 'America/St_Thomas',
  331. 'America/St_Vincent',
  332. 'America/Tortola',
  333. 'Etc/GMT+4',
  334. ],
  335. },
  336. {
  337. value: 'Pacific SA Standard Time',
  338. abbr: 'PSST',
  339. offset: -4,
  340. isdst: false,
  341. text: '(UTC-04:00) Santiago',
  342. utc: ['America/Santiago', 'Antarctica/Palmer'],
  343. },
  344. {
  345. value: 'Newfoundland Standard Time',
  346. abbr: 'NDT',
  347. offset: -2.5,
  348. isdst: true,
  349. text: '(UTC-03:30) Newfoundland',
  350. utc: ['America/St_Johns'],
  351. },
  352. {
  353. value: 'E. South America Standard Time',
  354. abbr: 'ESAST',
  355. offset: -3,
  356. isdst: false,
  357. text: '(UTC-03:00) Brasilia',
  358. utc: ['America/Sao_Paulo'],
  359. },
  360. {
  361. value: 'Argentina Standard Time',
  362. abbr: 'AST',
  363. offset: -3,
  364. isdst: false,
  365. text: '(UTC-03:00) Buenos Aires',
  366. utc: [
  367. 'America/Argentina/La_Rioja',
  368. 'America/Argentina/Rio_Gallegos',
  369. 'America/Argentina/Salta',
  370. 'America/Argentina/San_Juan',
  371. 'America/Argentina/San_Luis',
  372. 'America/Argentina/Tucuman',
  373. 'America/Argentina/Ushuaia',
  374. 'America/Buenos_Aires',
  375. 'America/Catamarca',
  376. 'America/Cordoba',
  377. 'America/Jujuy',
  378. 'America/Mendoza',
  379. ],
  380. },
  381. {
  382. value: 'SA Eastern Standard Time',
  383. abbr: 'SEST',
  384. offset: -3,
  385. isdst: false,
  386. text: '(UTC-03:00) Cayenne, Fortaleza',
  387. utc: [
  388. 'America/Araguaina',
  389. 'America/Belem',
  390. 'America/Cayenne',
  391. 'America/Fortaleza',
  392. 'America/Maceio',
  393. 'America/Paramaribo',
  394. 'America/Recife',
  395. 'America/Santarem',
  396. 'Antarctica/Rothera',
  397. 'Atlantic/Stanley',
  398. 'Etc/GMT+3',
  399. ],
  400. },
  401. {
  402. value: 'Greenland Standard Time',
  403. abbr: 'GDT',
  404. offset: -3,
  405. isdst: true,
  406. text: '(UTC-03:00) Greenland',
  407. utc: ['America/Godthab'],
  408. },
  409. {
  410. value: 'Montevideo Standard Time',
  411. abbr: 'MST',
  412. offset: -3,
  413. isdst: false,
  414. text: '(UTC-03:00) Montevideo',
  415. utc: ['America/Montevideo'],
  416. },
  417. {
  418. value: 'Bahia Standard Time',
  419. abbr: 'BST',
  420. offset: -3,
  421. isdst: false,
  422. text: '(UTC-03:00) Salvador',
  423. utc: ['America/Bahia'],
  424. },
  425. {
  426. value: 'UTC-02',
  427. abbr: 'U',
  428. offset: -2,
  429. isdst: false,
  430. text: '(UTC-02:00) Coordinated Universal Time-02',
  431. utc: ['America/Noronha', 'Atlantic/South_Georgia', 'Etc/GMT+2'],
  432. },
  433. {
  434. value: 'Azores Standard Time',
  435. abbr: 'ADT',
  436. offset: 0,
  437. isdst: true,
  438. text: '(UTC-01:00) Azores',
  439. utc: ['America/Scoresbysund', 'Atlantic/Azores'],
  440. },
  441. {
  442. value: 'Cape Verde Standard Time',
  443. abbr: 'CVST',
  444. offset: -1,
  445. isdst: false,
  446. text: '(UTC-01:00) Cape Verde Is.',
  447. utc: ['Atlantic/Cape_Verde', 'Etc/GMT+1'],
  448. },
  449. {
  450. value: 'Morocco Standard Time',
  451. abbr: 'MDT',
  452. offset: 1,
  453. isdst: true,
  454. text: '(UTC) Casablanca',
  455. utc: ['Africa/Casablanca', 'Africa/El_Aaiun'],
  456. },
  457. {
  458. value: 'UTC',
  459. abbr: 'UTC',
  460. offset: 0,
  461. isdst: false,
  462. text: '(UTC) Coordinated Universal Time',
  463. utc: ['America/Danmarkshavn', 'Etc/GMT'],
  464. },
  465. {
  466. value: 'British Summer Time',
  467. abbr: 'BST',
  468. offset: 1,
  469. isdst: true,
  470. text: '(UTC+01:00) Edinburgh, London',
  471. utc: ['Europe/Isle_of_Man', 'Europe/Guernsey', 'Europe/Jersey', 'Europe/London'],
  472. },
  473. {
  474. value: 'GMT Standard Time',
  475. abbr: 'GDT',
  476. offset: 1,
  477. isdst: true,
  478. text: '(UTC) Dublin, Lisbon',
  479. utc: [
  480. 'Atlantic/Canary',
  481. 'Atlantic/Faeroe',
  482. 'Atlantic/Madeira',
  483. 'Europe/Dublin',
  484. 'Europe/Lisbon',
  485. ],
  486. },
  487. {
  488. value: 'Greenwich Standard Time',
  489. abbr: 'GST',
  490. offset: 0,
  491. isdst: false,
  492. text: '(UTC) Monrovia, Reykjavik',
  493. utc: [
  494. 'Africa/Abidjan',
  495. 'Africa/Accra',
  496. 'Africa/Bamako',
  497. 'Africa/Banjul',
  498. 'Africa/Bissau',
  499. 'Africa/Conakry',
  500. 'Africa/Dakar',
  501. 'Africa/Freetown',
  502. 'Africa/Lome',
  503. 'Africa/Monrovia',
  504. 'Africa/Nouakchott',
  505. 'Africa/Ouagadougou',
  506. 'Africa/Sao_Tome',
  507. 'Atlantic/Reykjavik',
  508. 'Atlantic/St_Helena',
  509. ],
  510. },
  511. {
  512. value: 'W. Europe Standard Time',
  513. abbr: 'WEDT',
  514. offset: 2,
  515. isdst: true,
  516. text: '(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna',
  517. utc: [
  518. 'Arctic/Longyearbyen',
  519. 'Europe/Amsterdam',
  520. 'Europe/Andorra',
  521. 'Europe/Berlin',
  522. 'Europe/Busingen',
  523. 'Europe/Gibraltar',
  524. 'Europe/Luxembourg',
  525. 'Europe/Malta',
  526. 'Europe/Monaco',
  527. 'Europe/Oslo',
  528. 'Europe/Rome',
  529. 'Europe/San_Marino',
  530. 'Europe/Stockholm',
  531. 'Europe/Vaduz',
  532. 'Europe/Vatican',
  533. 'Europe/Vienna',
  534. 'Europe/Zurich',
  535. ],
  536. },
  537. {
  538. value: 'Central Europe Standard Time',
  539. abbr: 'CEDT',
  540. offset: 2,
  541. isdst: true,
  542. text: '(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague',
  543. utc: [
  544. 'Europe/Belgrade',
  545. 'Europe/Bratislava',
  546. 'Europe/Budapest',
  547. 'Europe/Ljubljana',
  548. 'Europe/Podgorica',
  549. 'Europe/Prague',
  550. 'Europe/Tirane',
  551. ],
  552. },
  553. {
  554. value: 'Romance Standard Time',
  555. abbr: 'RDT',
  556. offset: 2,
  557. isdst: true,
  558. text: '(UTC+01:00) Brussels, Copenhagen, Madrid, Paris',
  559. utc: ['Africa/Ceuta', 'Europe/Brussels', 'Europe/Copenhagen', 'Europe/Madrid', 'Europe/Paris'],
  560. },
  561. {
  562. value: 'Central European Standard Time',
  563. abbr: 'CEDT',
  564. offset: 2,
  565. isdst: true,
  566. text: '(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb',
  567. utc: ['Europe/Sarajevo', 'Europe/Skopje', 'Europe/Warsaw', 'Europe/Zagreb'],
  568. },
  569. {
  570. value: 'W. Central Africa Standard Time',
  571. abbr: 'WCAST',
  572. offset: 1,
  573. isdst: false,
  574. text: '(UTC+01:00) West Central Africa',
  575. utc: [
  576. 'Africa/Algiers',
  577. 'Africa/Bangui',
  578. 'Africa/Brazzaville',
  579. 'Africa/Douala',
  580. 'Africa/Kinshasa',
  581. 'Africa/Lagos',
  582. 'Africa/Libreville',
  583. 'Africa/Luanda',
  584. 'Africa/Malabo',
  585. 'Africa/Ndjamena',
  586. 'Africa/Niamey',
  587. 'Africa/Porto-Novo',
  588. 'Africa/Tunis',
  589. 'Etc/GMT-1',
  590. ],
  591. },
  592. {
  593. value: 'Namibia Standard Time',
  594. abbr: 'NST',
  595. offset: 1,
  596. isdst: false,
  597. text: '(UTC+01:00) Windhoek',
  598. utc: ['Africa/Windhoek'],
  599. },
  600. {
  601. value: 'GTB Standard Time',
  602. abbr: 'GDT',
  603. offset: 3,
  604. isdst: true,
  605. text: '(UTC+02:00) Athens, Bucharest',
  606. utc: ['Asia/Nicosia', 'Europe/Athens', 'Europe/Bucharest', 'Europe/Chisinau'],
  607. },
  608. {
  609. value: 'Middle East Standard Time',
  610. abbr: 'MEDT',
  611. offset: 3,
  612. isdst: true,
  613. text: '(UTC+02:00) Beirut',
  614. utc: ['Asia/Beirut'],
  615. },
  616. {
  617. value: 'Egypt Standard Time',
  618. abbr: 'EST',
  619. offset: 2,
  620. isdst: false,
  621. text: '(UTC+02:00) Cairo',
  622. utc: ['Africa/Cairo'],
  623. },
  624. {
  625. value: 'Syria Standard Time',
  626. abbr: 'SDT',
  627. offset: 3,
  628. isdst: true,
  629. text: '(UTC+02:00) Damascus',
  630. utc: ['Asia/Damascus'],
  631. },
  632. {
  633. value: 'E. Europe Standard Time',
  634. abbr: 'EEDT',
  635. offset: 3,
  636. isdst: true,
  637. text: '(UTC+02:00) E. Europe',
  638. utc: [
  639. 'Asia/Nicosia',
  640. 'Europe/Athens',
  641. 'Europe/Bucharest',
  642. 'Europe/Chisinau',
  643. 'Europe/Helsinki',
  644. 'Europe/Kiev',
  645. 'Europe/Mariehamn',
  646. 'Europe/Nicosia',
  647. 'Europe/Riga',
  648. 'Europe/Sofia',
  649. 'Europe/Tallinn',
  650. 'Europe/Uzhgorod',
  651. 'Europe/Vilnius',
  652. 'Europe/Zaporozhye',
  653. ],
  654. },
  655. {
  656. value: 'South Africa Standard Time',
  657. abbr: 'SAST',
  658. offset: 2,
  659. isdst: false,
  660. text: '(UTC+02:00) Harare, Pretoria',
  661. utc: [
  662. 'Africa/Blantyre',
  663. 'Africa/Bujumbura',
  664. 'Africa/Gaborone',
  665. 'Africa/Harare',
  666. 'Africa/Johannesburg',
  667. 'Africa/Kigali',
  668. 'Africa/Lubumbashi',
  669. 'Africa/Lusaka',
  670. 'Africa/Maputo',
  671. 'Africa/Maseru',
  672. 'Africa/Mbabane',
  673. 'Etc/GMT-2',
  674. ],
  675. },
  676. {
  677. value: 'FLE Standard Time',
  678. abbr: 'FDT',
  679. offset: 3,
  680. isdst: true,
  681. text: '(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius',
  682. utc: [
  683. 'Europe/Helsinki',
  684. 'Europe/Kiev',
  685. 'Europe/Mariehamn',
  686. 'Europe/Riga',
  687. 'Europe/Sofia',
  688. 'Europe/Tallinn',
  689. 'Europe/Uzhgorod',
  690. 'Europe/Vilnius',
  691. 'Europe/Zaporozhye',
  692. ],
  693. },
  694. {
  695. value: 'Turkey Standard Time',
  696. abbr: 'TDT',
  697. offset: 3,
  698. isdst: false,
  699. text: '(UTC+03:00) Istanbul',
  700. utc: ['Europe/Istanbul'],
  701. },
  702. {
  703. value: 'Israel Standard Time',
  704. abbr: 'JDT',
  705. offset: 3,
  706. isdst: true,
  707. text: '(UTC+02:00) Jerusalem',
  708. utc: ['Asia/Jerusalem'],
  709. },
  710. {
  711. value: 'Libya Standard Time',
  712. abbr: 'LST',
  713. offset: 2,
  714. isdst: false,
  715. text: '(UTC+02:00) Tripoli',
  716. utc: ['Africa/Tripoli'],
  717. },
  718. {
  719. value: 'Jordan Standard Time',
  720. abbr: 'JST',
  721. offset: 3,
  722. isdst: false,
  723. text: '(UTC+03:00) Amman',
  724. utc: ['Asia/Amman'],
  725. },
  726. {
  727. value: 'Arabic Standard Time',
  728. abbr: 'AST',
  729. offset: 3,
  730. isdst: false,
  731. text: '(UTC+03:00) Baghdad',
  732. utc: ['Asia/Baghdad'],
  733. },
  734. {
  735. value: 'Kaliningrad Standard Time',
  736. abbr: 'KST',
  737. offset: 3,
  738. isdst: false,
  739. text: '(UTC+02:00) Kaliningrad',
  740. utc: ['Europe/Kaliningrad'],
  741. },
  742. {
  743. value: 'Arab Standard Time',
  744. abbr: 'AST',
  745. offset: 3,
  746. isdst: false,
  747. text: '(UTC+03:00) Kuwait, Riyadh',
  748. utc: ['Asia/Aden', 'Asia/Bahrain', 'Asia/Kuwait', 'Asia/Qatar', 'Asia/Riyadh'],
  749. },
  750. {
  751. value: 'E. Africa Standard Time',
  752. abbr: 'EAST',
  753. offset: 3,
  754. isdst: false,
  755. text: '(UTC+03:00) Nairobi',
  756. utc: [
  757. 'Africa/Addis_Ababa',
  758. 'Africa/Asmera',
  759. 'Africa/Dar_es_Salaam',
  760. 'Africa/Djibouti',
  761. 'Africa/Juba',
  762. 'Africa/Kampala',
  763. 'Africa/Khartoum',
  764. 'Africa/Mogadishu',
  765. 'Africa/Nairobi',
  766. 'Antarctica/Syowa',
  767. 'Etc/GMT-3',
  768. 'Indian/Antananarivo',
  769. 'Indian/Comoro',
  770. 'Indian/Mayotte',
  771. ],
  772. },
  773. {
  774. value: 'Moscow Standard Time',
  775. abbr: 'MSK',
  776. offset: 3,
  777. isdst: false,
  778. text: '(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk',
  779. utc: ['Europe/Kirov', 'Europe/Moscow', 'Europe/Simferopol', 'Europe/Volgograd', 'Europe/Minsk'],
  780. },
  781. {
  782. value: 'Samara Time',
  783. abbr: 'SAMT',
  784. offset: 4,
  785. isdst: false,
  786. text: '(UTC+04:00) Samara, Ulyanovsk, Saratov',
  787. utc: ['Europe/Astrakhan', 'Europe/Samara', 'Europe/Ulyanovsk'],
  788. },
  789. {
  790. value: 'Iran Standard Time',
  791. abbr: 'IDT',
  792. offset: 4.5,
  793. isdst: true,
  794. text: '(UTC+03:30) Tehran',
  795. utc: ['Asia/Tehran'],
  796. },
  797. {
  798. value: 'Arabian Standard Time',
  799. abbr: 'AST',
  800. offset: 4,
  801. isdst: false,
  802. text: '(UTC+04:00) Abu Dhabi, Muscat',
  803. utc: ['Asia/Dubai', 'Asia/Muscat', 'Etc/GMT-4'],
  804. },
  805. {
  806. value: 'Azerbaijan Standard Time',
  807. abbr: 'ADT',
  808. offset: 5,
  809. isdst: true,
  810. text: '(UTC+04:00) Baku',
  811. utc: ['Asia/Baku'],
  812. },
  813. {
  814. value: 'Mauritius Standard Time',
  815. abbr: 'MST',
  816. offset: 4,
  817. isdst: false,
  818. text: '(UTC+04:00) Port Louis',
  819. utc: ['Indian/Mahe', 'Indian/Mauritius', 'Indian/Reunion'],
  820. },
  821. {
  822. value: 'Georgian Standard Time',
  823. abbr: 'GET',
  824. offset: 4,
  825. isdst: false,
  826. text: '(UTC+04:00) Tbilisi',
  827. utc: ['Asia/Tbilisi'],
  828. },
  829. {
  830. value: 'Caucasus Standard Time',
  831. abbr: 'CST',
  832. offset: 4,
  833. isdst: false,
  834. text: '(UTC+04:00) Yerevan',
  835. utc: ['Asia/Yerevan'],
  836. },
  837. {
  838. value: 'Afghanistan Standard Time',
  839. abbr: 'AST',
  840. offset: 4.5,
  841. isdst: false,
  842. text: '(UTC+04:30) Kabul',
  843. utc: ['Asia/Kabul'],
  844. },
  845. {
  846. value: 'West Asia Standard Time',
  847. abbr: 'WAST',
  848. offset: 5,
  849. isdst: false,
  850. text: '(UTC+05:00) Ashgabat, Tashkent',
  851. utc: [
  852. 'Antarctica/Mawson',
  853. 'Asia/Aqtau',
  854. 'Asia/Aqtobe',
  855. 'Asia/Ashgabat',
  856. 'Asia/Dushanbe',
  857. 'Asia/Oral',
  858. 'Asia/Samarkand',
  859. 'Asia/Tashkent',
  860. 'Etc/GMT-5',
  861. 'Indian/Kerguelen',
  862. 'Indian/Maldives',
  863. ],
  864. },
  865. {
  866. value: 'Yekaterinburg Time',
  867. abbr: 'YEKT',
  868. offset: 5,
  869. isdst: false,
  870. text: '(UTC+05:00) Yekaterinburg',
  871. utc: ['Asia/Yekaterinburg'],
  872. },
  873. {
  874. value: 'Pakistan Standard Time',
  875. abbr: 'PKT',
  876. offset: 5,
  877. isdst: false,
  878. text: '(UTC+05:00) Islamabad, Karachi',
  879. utc: ['Asia/Karachi'],
  880. },
  881. {
  882. value: 'India Standard Time',
  883. abbr: 'IST',
  884. offset: 5.5,
  885. isdst: false,
  886. text: '(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi',
  887. utc: ['Asia/Kolkata', 'Asia/Calcutta'],
  888. },
  889. {
  890. value: 'Sri Lanka Standard Time',
  891. abbr: 'SLST',
  892. offset: 5.5,
  893. isdst: false,
  894. text: '(UTC+05:30) Sri Jayawardenepura',
  895. utc: ['Asia/Colombo'],
  896. },
  897. {
  898. value: 'Nepal Standard Time',
  899. abbr: 'NST',
  900. offset: 5.75,
  901. isdst: false,
  902. text: '(UTC+05:45) Kathmandu',
  903. utc: ['Asia/Kathmandu'],
  904. },
  905. {
  906. value: 'Central Asia Standard Time',
  907. abbr: 'CAST',
  908. offset: 6,
  909. isdst: false,
  910. text: '(UTC+06:00) Nur-Sultan (Astana)',
  911. utc: [
  912. 'Antarctica/Vostok',
  913. 'Asia/Almaty',
  914. 'Asia/Bishkek',
  915. 'Asia/Qyzylorda',
  916. 'Asia/Urumqi',
  917. 'Etc/GMT-6',
  918. 'Indian/Chagos',
  919. ],
  920. },
  921. {
  922. value: 'Bangladesh Standard Time',
  923. abbr: 'BST',
  924. offset: 6,
  925. isdst: false,
  926. text: '(UTC+06:00) Dhaka',
  927. utc: ['Asia/Dhaka', 'Asia/Thimphu'],
  928. },
  929. {
  930. value: 'Myanmar Standard Time',
  931. abbr: 'MST',
  932. offset: 6.5,
  933. isdst: false,
  934. text: '(UTC+06:30) Yangon (Rangoon)',
  935. utc: ['Asia/Rangoon', 'Indian/Cocos'],
  936. },
  937. {
  938. value: 'SE Asia Standard Time',
  939. abbr: 'SAST',
  940. offset: 7,
  941. isdst: false,
  942. text: '(UTC+07:00) Bangkok, Hanoi, Jakarta',
  943. utc: [
  944. 'Antarctica/Davis',
  945. 'Asia/Bangkok',
  946. 'Asia/Hovd',
  947. 'Asia/Jakarta',
  948. 'Asia/Phnom_Penh',
  949. 'Asia/Pontianak',
  950. 'Asia/Saigon',
  951. 'Asia/Vientiane',
  952. 'Etc/GMT-7',
  953. 'Indian/Christmas',
  954. ],
  955. },
  956. {
  957. value: 'N. Central Asia Standard Time',
  958. abbr: 'NCAST',
  959. offset: 7,
  960. isdst: false,
  961. text: '(UTC+07:00) Novosibirsk',
  962. utc: ['Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk'],
  963. },
  964. {
  965. value: 'China Standard Time',
  966. abbr: 'CST',
  967. offset: 8,
  968. isdst: false,
  969. text: '(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi',
  970. utc: ['Asia/Hong_Kong', 'Asia/Macau', 'Asia/Shanghai'],
  971. },
  972. {
  973. value: 'North Asia Standard Time',
  974. abbr: 'NAST',
  975. offset: 8,
  976. isdst: false,
  977. text: '(UTC+08:00) Krasnoyarsk',
  978. utc: ['Asia/Krasnoyarsk'],
  979. },
  980. {
  981. value: 'Singapore Standard Time',
  982. abbr: 'MPST',
  983. offset: 8,
  984. isdst: false,
  985. text: '(UTC+08:00) Kuala Lumpur, Singapore',
  986. utc: [
  987. 'Asia/Brunei',
  988. 'Asia/Kuala_Lumpur',
  989. 'Asia/Kuching',
  990. 'Asia/Makassar',
  991. 'Asia/Manila',
  992. 'Asia/Singapore',
  993. 'Etc/GMT-8',
  994. ],
  995. },
  996. {
  997. value: 'W. Australia Standard Time',
  998. abbr: 'WAST',
  999. offset: 8,
  1000. isdst: false,
  1001. text: '(UTC+08:00) Perth',
  1002. utc: ['Antarctica/Casey', 'Australia/Perth'],
  1003. },
  1004. {
  1005. value: 'Taipei Standard Time',
  1006. abbr: 'TST',
  1007. offset: 8,
  1008. isdst: false,
  1009. text: '(UTC+08:00) Taipei',
  1010. utc: ['Asia/Taipei'],
  1011. },
  1012. {
  1013. value: 'Ulaanbaatar Standard Time',
  1014. abbr: 'UST',
  1015. offset: 8,
  1016. isdst: false,
  1017. text: '(UTC+08:00) Ulaanbaatar',
  1018. utc: ['Asia/Choibalsan', 'Asia/Ulaanbaatar'],
  1019. },
  1020. {
  1021. value: 'North Asia East Standard Time',
  1022. abbr: 'NAEST',
  1023. offset: 8,
  1024. isdst: false,
  1025. text: '(UTC+08:00) Irkutsk',
  1026. utc: ['Asia/Irkutsk'],
  1027. },
  1028. {
  1029. value: 'Japan Standard Time',
  1030. abbr: 'JST',
  1031. offset: 9,
  1032. isdst: false,
  1033. text: '(UTC+09:00) Osaka, Sapporo, Tokyo',
  1034. utc: ['Asia/Dili', 'Asia/Jayapura', 'Asia/Tokyo', 'Etc/GMT-9', 'Pacific/Palau'],
  1035. },
  1036. {
  1037. value: 'Korea Standard Time',
  1038. abbr: 'KST',
  1039. offset: 9,
  1040. isdst: false,
  1041. text: '(UTC+09:00) Seoul',
  1042. utc: ['Asia/Pyongyang', 'Asia/Seoul'],
  1043. },
  1044. {
  1045. value: 'Cen. Australia Standard Time',
  1046. abbr: 'CAST',
  1047. offset: 9.5,
  1048. isdst: false,
  1049. text: '(UTC+09:30) Adelaide',
  1050. utc: ['Australia/Adelaide', 'Australia/Broken_Hill'],
  1051. },
  1052. {
  1053. value: 'AUS Central Standard Time',
  1054. abbr: 'ACST',
  1055. offset: 9.5,
  1056. isdst: false,
  1057. text: '(UTC+09:30) Darwin',
  1058. utc: ['Australia/Darwin'],
  1059. },
  1060. {
  1061. value: 'E. Australia Standard Time',
  1062. abbr: 'EAST',
  1063. offset: 10,
  1064. isdst: false,
  1065. text: '(UTC+10:00) Brisbane',
  1066. utc: ['Australia/Brisbane', 'Australia/Lindeman'],
  1067. },
  1068. {
  1069. value: 'AUS Eastern Standard Time',
  1070. abbr: 'AEST',
  1071. offset: 10,
  1072. isdst: false,
  1073. text: '(UTC+10:00) Canberra, Melbourne, Sydney',
  1074. utc: ['Australia/Melbourne', 'Australia/Sydney'],
  1075. },
  1076. {
  1077. value: 'West Pacific Standard Time',
  1078. abbr: 'WPST',
  1079. offset: 10,
  1080. isdst: false,
  1081. text: '(UTC+10:00) Guam, Port Moresby',
  1082. utc: [
  1083. 'Antarctica/DumontDUrville',
  1084. 'Etc/GMT-10',
  1085. 'Pacific/Guam',
  1086. 'Pacific/Port_Moresby',
  1087. 'Pacific/Saipan',
  1088. 'Pacific/Truk',
  1089. ],
  1090. },
  1091. {
  1092. value: 'Tasmania Standard Time',
  1093. abbr: 'TST',
  1094. offset: 10,
  1095. isdst: false,
  1096. text: '(UTC+10:00) Hobart',
  1097. utc: ['Australia/Currie', 'Australia/Hobart'],
  1098. },
  1099. {
  1100. value: 'Yakutsk Standard Time',
  1101. abbr: 'YST',
  1102. offset: 9,
  1103. isdst: false,
  1104. text: '(UTC+09:00) Yakutsk',
  1105. utc: ['Asia/Chita', 'Asia/Khandyga', 'Asia/Yakutsk'],
  1106. },
  1107. {
  1108. value: 'Central Pacific Standard Time',
  1109. abbr: 'CPST',
  1110. offset: 11,
  1111. isdst: false,
  1112. text: '(UTC+11:00) Solomon Is., New Caledonia',
  1113. utc: [
  1114. 'Antarctica/Macquarie',
  1115. 'Etc/GMT-11',
  1116. 'Pacific/Efate',
  1117. 'Pacific/Guadalcanal',
  1118. 'Pacific/Kosrae',
  1119. 'Pacific/Noumea',
  1120. 'Pacific/Ponape',
  1121. ],
  1122. },
  1123. {
  1124. value: 'Vladivostok Standard Time',
  1125. abbr: 'VST',
  1126. offset: 11,
  1127. isdst: false,
  1128. text: '(UTC+11:00) Vladivostok',
  1129. utc: ['Asia/Sakhalin', 'Asia/Ust-Nera', 'Asia/Vladivostok'],
  1130. },
  1131. {
  1132. value: 'New Zealand Standard Time',
  1133. abbr: 'NZST',
  1134. offset: 12,
  1135. isdst: false,
  1136. text: '(UTC+12:00) Auckland, Wellington',
  1137. utc: ['Antarctica/McMurdo', 'Pacific/Auckland'],
  1138. },
  1139. {
  1140. value: 'UTC+12',
  1141. abbr: 'U',
  1142. offset: 12,
  1143. isdst: false,
  1144. text: '(UTC+12:00) Coordinated Universal Time+12',
  1145. utc: [
  1146. 'Etc/GMT-12',
  1147. 'Pacific/Funafuti',
  1148. 'Pacific/Kwajalein',
  1149. 'Pacific/Majuro',
  1150. 'Pacific/Nauru',
  1151. 'Pacific/Tarawa',
  1152. 'Pacific/Wake',
  1153. 'Pacific/Wallis',
  1154. ],
  1155. },
  1156. {
  1157. value: 'Fiji Standard Time',
  1158. abbr: 'FST',
  1159. offset: 12,
  1160. isdst: false,
  1161. text: '(UTC+12:00) Fiji',
  1162. utc: ['Pacific/Fiji'],
  1163. },
  1164. {
  1165. value: 'Magadan Standard Time',
  1166. abbr: 'MST',
  1167. offset: 12,
  1168. isdst: false,
  1169. text: '(UTC+12:00) Magadan',
  1170. utc: ['Asia/Anadyr', 'Asia/Kamchatka', 'Asia/Magadan', 'Asia/Srednekolymsk'],
  1171. },
  1172. {
  1173. value: 'Kamchatka Standard Time',
  1174. abbr: 'KDT',
  1175. offset: 13,
  1176. isdst: true,
  1177. text: '(UTC+12:00) Petropavlovsk-Kamchatsky - Old',
  1178. utc: ['Asia/Kamchatka'],
  1179. },
  1180. {
  1181. value: 'Tonga Standard Time',
  1182. abbr: 'TST',
  1183. offset: 13,
  1184. isdst: false,
  1185. text: "(UTC+13:00) Nuku'alofa",
  1186. utc: ['Etc/GMT-13', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Tongatapu'],
  1187. },
  1188. {
  1189. value: 'Samoa Standard Time',
  1190. abbr: 'SST',
  1191. offset: 13,
  1192. isdst: false,
  1193. text: '(UTC+13:00) Samoa',
  1194. utc: ['Pacific/Apia'],
  1195. },
  1196. ]
  1197. /**
  1198. * Deduplicated view of `ALL_TIMEZONES`, keyed by the entry's primary IANA
  1199. * name (`utc[0]`). Several catalog rows share an IANA target — e.g. PDT and
  1200. * PST both point to `America/Los_Angeles` — which would render duplicate UI
  1201. * rows that all store the same value when picked. We prefer the standard-time
  1202. * (`isdst: false`) row when both are present.
  1203. */
  1204. export const TIMEZONES_BY_IANA: Timezone[] = (() => {
  1205. const seen = new Map<string, Timezone>()
  1206. for (const entry of ALL_TIMEZONES) {
  1207. const key = entry.utc[0]
  1208. if (!key) continue
  1209. const existing = seen.get(key)
  1210. if (!existing || (existing.isdst && !entry.isdst)) {
  1211. seen.set(key, entry)
  1212. }
  1213. }
  1214. return Array.from(seen.values())
  1215. })()
  1216. /** Look up the catalog entry that owns the given IANA name (any of `utc[]`). */
  1217. export const findTimezoneByIana = (iana: string): Timezone | undefined =>
  1218. ALL_TIMEZONES.find((entry) => entry.utc.includes(iana))