timezone-case-insensitive.js (13611B)
1 // Copyright (C) 2023 Justin Grant. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 esid: sec-initializedatetimeformat 6 description: Time zone identifiers are case-normalized 7 features: [canonical-tz] 8 ---*/ 9 10 const timeZoneIdentifiers = [ 11 // IANA TZDB Zone names 12 "Africa/Abidjan", 13 "Africa/Algiers", 14 "Africa/Bissau", 15 "Africa/Cairo", 16 "Africa/Casablanca", 17 "Africa/Ceuta", 18 "Africa/El_Aaiun", 19 "Africa/Johannesburg", 20 "Africa/Juba", 21 "Africa/Khartoum", 22 "Africa/Lagos", 23 "Africa/Maputo", 24 "Africa/Monrovia", 25 "Africa/Nairobi", 26 "Africa/Ndjamena", 27 "Africa/Sao_Tome", 28 "Africa/Tripoli", 29 "Africa/Tunis", 30 "Africa/Windhoek", 31 "America/Adak", 32 "America/Anchorage", 33 "America/Araguaina", 34 "America/Argentina/Buenos_Aires", 35 "America/Argentina/Catamarca", 36 "America/Argentina/Cordoba", 37 "America/Argentina/Jujuy", 38 "America/Argentina/La_Rioja", 39 "America/Argentina/Mendoza", 40 "America/Argentina/Rio_Gallegos", 41 "America/Argentina/Salta", 42 "America/Argentina/San_Juan", 43 "America/Argentina/San_Luis", 44 "America/Argentina/Tucuman", 45 "America/Argentina/Ushuaia", 46 "America/Asuncion", 47 "America/Bahia", 48 "America/Bahia_Banderas", 49 "America/Barbados", 50 "America/Belem", 51 "America/Belize", 52 "America/Boa_Vista", 53 "America/Bogota", 54 "America/Boise", 55 "America/Cambridge_Bay", 56 "America/Campo_Grande", 57 "America/Cancun", 58 "America/Caracas", 59 "America/Cayenne", 60 "America/Chicago", 61 "America/Chihuahua", 62 // 'America/Ciudad_Juarez' // uncomment after Node supports this ID added in TZDB 2022g 63 "America/Costa_Rica", 64 "America/Cuiaba", 65 "America/Danmarkshavn", 66 "America/Dawson", 67 "America/Dawson_Creek", 68 "America/Denver", 69 "America/Detroit", 70 "America/Edmonton", 71 "America/Eirunepe", 72 "America/El_Salvador", 73 "America/Fort_Nelson", 74 "America/Fortaleza", 75 "America/Glace_Bay", 76 "America/Goose_Bay", 77 "America/Grand_Turk", 78 "America/Guatemala", 79 "America/Guayaquil", 80 "America/Guyana", 81 "America/Halifax", 82 "America/Havana", 83 "America/Hermosillo", 84 "America/Indiana/Indianapolis", 85 "America/Indiana/Knox", 86 "America/Indiana/Marengo", 87 "America/Indiana/Petersburg", 88 "America/Indiana/Tell_City", 89 "America/Indiana/Vevay", 90 "America/Indiana/Vincennes", 91 "America/Indiana/Winamac", 92 "America/Inuvik", 93 "America/Iqaluit", 94 "America/Jamaica", 95 "America/Juneau", 96 "America/Kentucky/Louisville", 97 "America/Kentucky/Monticello", 98 "America/La_Paz", 99 "America/Lima", 100 "America/Los_Angeles", 101 "America/Maceio", 102 "America/Managua", 103 "America/Manaus", 104 "America/Martinique", 105 "America/Matamoros", 106 "America/Mazatlan", 107 "America/Menominee", 108 "America/Merida", 109 "America/Metlakatla", 110 "America/Mexico_City", 111 "America/Miquelon", 112 "America/Moncton", 113 "America/Monterrey", 114 "America/Montevideo", 115 "America/New_York", 116 "America/Nome", 117 "America/Noronha", 118 "America/North_Dakota/Beulah", 119 "America/North_Dakota/Center", 120 "America/North_Dakota/New_Salem", 121 "America/Nuuk", 122 "America/Ojinaga", 123 "America/Panama", 124 "America/Paramaribo", 125 "America/Phoenix", 126 "America/Port-au-Prince", 127 "America/Porto_Velho", 128 "America/Puerto_Rico", 129 "America/Punta_Arenas", 130 "America/Rankin_Inlet", 131 "America/Recife", 132 "America/Regina", 133 "America/Resolute", 134 "America/Rio_Branco", 135 "America/Santarem", 136 "America/Santiago", 137 "America/Santo_Domingo", 138 "America/Sao_Paulo", 139 "America/Scoresbysund", 140 "America/Sitka", 141 "America/St_Johns", 142 "America/Swift_Current", 143 "America/Tegucigalpa", 144 "America/Thule", 145 "America/Tijuana", 146 "America/Toronto", 147 "America/Vancouver", 148 "America/Whitehorse", 149 "America/Winnipeg", 150 "America/Yakutat", 151 "America/Yellowknife", 152 "Antarctica/Casey", 153 "Antarctica/Davis", 154 "Antarctica/Macquarie", 155 "Antarctica/Mawson", 156 "Antarctica/Palmer", 157 "Antarctica/Rothera", 158 "Antarctica/Troll", 159 "Asia/Almaty", 160 "Asia/Amman", 161 "Asia/Anadyr", 162 "Asia/Aqtau", 163 "Asia/Aqtobe", 164 "Asia/Ashgabat", 165 "Asia/Atyrau", 166 "Asia/Baghdad", 167 "Asia/Baku", 168 "Asia/Bangkok", 169 "Asia/Barnaul", 170 "Asia/Beirut", 171 "Asia/Bishkek", 172 "Asia/Chita", 173 "Asia/Choibalsan", 174 "Asia/Colombo", 175 "Asia/Damascus", 176 "Asia/Dhaka", 177 "Asia/Dili", 178 "Asia/Dubai", 179 "Asia/Dushanbe", 180 "Asia/Famagusta", 181 "Asia/Gaza", 182 "Asia/Hebron", 183 "Asia/Ho_Chi_Minh", 184 "Asia/Hong_Kong", 185 "Asia/Hovd", 186 "Asia/Irkutsk", 187 "Asia/Jakarta", 188 "Asia/Jayapura", 189 "Asia/Jerusalem", 190 "Asia/Kabul", 191 "Asia/Kamchatka", 192 "Asia/Karachi", 193 "Asia/Kathmandu", 194 "Asia/Khandyga", 195 "Asia/Kolkata", 196 "Asia/Krasnoyarsk", 197 "Asia/Kuching", 198 "Asia/Macau", 199 "Asia/Magadan", 200 "Asia/Makassar", 201 "Asia/Manila", 202 "Asia/Nicosia", 203 "Asia/Novokuznetsk", 204 "Asia/Novosibirsk", 205 "Asia/Omsk", 206 "Asia/Oral", 207 "Asia/Pontianak", 208 "Asia/Pyongyang", 209 "Asia/Qatar", 210 "Asia/Qostanay", 211 "Asia/Qyzylorda", 212 "Asia/Riyadh", 213 "Asia/Sakhalin", 214 "Asia/Samarkand", 215 "Asia/Seoul", 216 "Asia/Shanghai", 217 "Asia/Singapore", 218 "Asia/Srednekolymsk", 219 "Asia/Taipei", 220 "Asia/Tashkent", 221 "Asia/Tbilisi", 222 "Asia/Tehran", 223 "Asia/Thimphu", 224 "Asia/Tokyo", 225 "Asia/Tomsk", 226 "Asia/Ulaanbaatar", 227 "Asia/Urumqi", 228 "Asia/Ust-Nera", 229 "Asia/Vladivostok", 230 "Asia/Yakutsk", 231 "Asia/Yangon", 232 "Asia/Yekaterinburg", 233 "Asia/Yerevan", 234 "Atlantic/Azores", 235 "Atlantic/Bermuda", 236 "Atlantic/Canary", 237 "Atlantic/Cape_Verde", 238 "Atlantic/Faroe", 239 "Atlantic/Madeira", 240 "Atlantic/South_Georgia", 241 "Atlantic/Stanley", 242 "Australia/Adelaide", 243 "Australia/Brisbane", 244 "Australia/Broken_Hill", 245 "Australia/Darwin", 246 "Australia/Eucla", 247 "Australia/Hobart", 248 "Australia/Lindeman", 249 "Australia/Lord_Howe", 250 "Australia/Melbourne", 251 "Australia/Perth", 252 "Australia/Sydney", 253 "CET", 254 "CST6CDT", 255 "EET", 256 "EST", 257 "EST5EDT", 258 "Etc/GMT", 259 "Etc/GMT+1", 260 "Etc/GMT+10", 261 "Etc/GMT+11", 262 "Etc/GMT+12", 263 "Etc/GMT+2", 264 "Etc/GMT+3", 265 "Etc/GMT+4", 266 "Etc/GMT+5", 267 "Etc/GMT+6", 268 "Etc/GMT+7", 269 "Etc/GMT+8", 270 "Etc/GMT+9", 271 "Etc/GMT-1", 272 "Etc/GMT-10", 273 "Etc/GMT-11", 274 "Etc/GMT-12", 275 "Etc/GMT-13", 276 "Etc/GMT-14", 277 "Etc/GMT-2", 278 "Etc/GMT-3", 279 "Etc/GMT-4", 280 "Etc/GMT-5", 281 "Etc/GMT-6", 282 "Etc/GMT-7", 283 "Etc/GMT-8", 284 "Etc/GMT-9", 285 "Etc/UTC", 286 "Europe/Andorra", 287 "Europe/Astrakhan", 288 "Europe/Athens", 289 "Europe/Belgrade", 290 "Europe/Berlin", 291 "Europe/Brussels", 292 "Europe/Bucharest", 293 "Europe/Budapest", 294 "Europe/Chisinau", 295 "Europe/Dublin", 296 "Europe/Gibraltar", 297 "Europe/Helsinki", 298 "Europe/Istanbul", 299 "Europe/Kaliningrad", 300 "Europe/Kirov", 301 "Europe/Kyiv", 302 "Europe/Lisbon", 303 "Europe/London", 304 "Europe/Madrid", 305 "Europe/Malta", 306 "Europe/Minsk", 307 "Europe/Moscow", 308 "Europe/Paris", 309 "Europe/Prague", 310 "Europe/Riga", 311 "Europe/Rome", 312 "Europe/Samara", 313 "Europe/Saratov", 314 "Europe/Simferopol", 315 "Europe/Sofia", 316 "Europe/Tallinn", 317 "Europe/Tirane", 318 "Europe/Ulyanovsk", 319 "Europe/Vienna", 320 "Europe/Vilnius", 321 "Europe/Volgograd", 322 "Europe/Warsaw", 323 "Europe/Zurich", 324 "HST", 325 "Indian/Chagos", 326 "Indian/Maldives", 327 "Indian/Mauritius", 328 "MET", 329 "MST", 330 "MST7MDT", 331 "PST8PDT", 332 "Pacific/Apia", 333 "Pacific/Auckland", 334 "Pacific/Bougainville", 335 "Pacific/Chatham", 336 "Pacific/Easter", 337 "Pacific/Efate", 338 "Pacific/Fakaofo", 339 "Pacific/Fiji", 340 "Pacific/Galapagos", 341 "Pacific/Gambier", 342 "Pacific/Guadalcanal", 343 "Pacific/Guam", 344 "Pacific/Honolulu", 345 "Pacific/Kanton", 346 "Pacific/Kiritimati", 347 "Pacific/Kosrae", 348 "Pacific/Kwajalein", 349 "Pacific/Marquesas", 350 "Pacific/Nauru", 351 "Pacific/Niue", 352 "Pacific/Norfolk", 353 "Pacific/Noumea", 354 "Pacific/Pago_Pago", 355 "Pacific/Palau", 356 "Pacific/Pitcairn", 357 "Pacific/Port_Moresby", 358 "Pacific/Rarotonga", 359 "Pacific/Tahiti", 360 "Pacific/Tarawa", 361 "Pacific/Tongatapu", 362 363 // IANA TZDB Link names 364 "WET", 365 "Africa/Accra", 366 "Africa/Addis_Ababa", 367 "Africa/Asmara", 368 "Africa/Asmera", 369 "Africa/Bamako", 370 "Africa/Bangui", 371 "Africa/Banjul", 372 "Africa/Blantyre", 373 "Africa/Brazzaville", 374 "Africa/Bujumbura", 375 "Africa/Conakry", 376 "Africa/Dakar", 377 "Africa/Dar_es_Salaam", 378 "Africa/Djibouti", 379 "Africa/Douala", 380 "Africa/Freetown", 381 "Africa/Gaborone", 382 "Africa/Harare", 383 "Africa/Kampala", 384 "Africa/Kigali", 385 "Africa/Kinshasa", 386 "Africa/Libreville", 387 "Africa/Lome", 388 "Africa/Luanda", 389 "Africa/Lubumbashi", 390 "Africa/Lusaka", 391 "Africa/Malabo", 392 "Africa/Maseru", 393 "Africa/Mbabane", 394 "Africa/Mogadishu", 395 "Africa/Niamey", 396 "Africa/Nouakchott", 397 "Africa/Ouagadougou", 398 "Africa/Porto-Novo", 399 "Africa/Timbuktu", 400 "America/Anguilla", 401 "America/Antigua", 402 "America/Argentina/ComodRivadavia", 403 "America/Aruba", 404 "America/Atikokan", 405 "America/Atka", 406 "America/Blanc-Sablon", 407 "America/Buenos_Aires", 408 "America/Catamarca", 409 "America/Cayman", 410 "America/Coral_Harbour", 411 "America/Cordoba", 412 "America/Creston", 413 "America/Curacao", 414 "America/Dominica", 415 "America/Ensenada", 416 "America/Fort_Wayne", 417 "America/Godthab", 418 "America/Grenada", 419 "America/Guadeloupe", 420 "America/Indianapolis", 421 "America/Jujuy", 422 "America/Knox_IN", 423 "America/Kralendijk", 424 "America/Louisville", 425 "America/Lower_Princes", 426 "America/Marigot", 427 "America/Mendoza", 428 "America/Montreal", 429 "America/Montserrat", 430 "America/Nassau", 431 "America/Nipigon", 432 "America/Pangnirtung", 433 "America/Port_of_Spain", 434 "America/Porto_Acre", 435 "America/Rainy_River", 436 "America/Rosario", 437 "America/Santa_Isabel", 438 "America/Shiprock", 439 "America/St_Barthelemy", 440 "America/St_Kitts", 441 "America/St_Lucia", 442 "America/St_Thomas", 443 "America/St_Vincent", 444 "America/Thunder_Bay", 445 "America/Tortola", 446 "America/Virgin", 447 "Antarctica/DumontDUrville", 448 "Antarctica/McMurdo", 449 "Antarctica/South_Pole", 450 "Antarctica/Syowa", 451 "Antarctica/Vostok", 452 "Arctic/Longyearbyen", 453 "Asia/Aden", 454 "Asia/Ashkhabad", 455 "Asia/Bahrain", 456 "Asia/Brunei", 457 "Asia/Calcutta", 458 "Asia/Chongqing", 459 "Asia/Chungking", 460 "Asia/Dacca", 461 "Asia/Harbin", 462 "Asia/Istanbul", 463 "Asia/Kashgar", 464 "Asia/Katmandu", 465 "Asia/Kuala_Lumpur", 466 "Asia/Kuwait", 467 "Asia/Macao", 468 "Asia/Muscat", 469 "Asia/Phnom_Penh", 470 "Asia/Rangoon", 471 "Asia/Saigon", 472 "Asia/Tel_Aviv", 473 "Asia/Thimbu", 474 "Asia/Ujung_Pandang", 475 "Asia/Ulan_Bator", 476 "Asia/Vientiane", 477 "Atlantic/Faeroe", 478 "Atlantic/Jan_Mayen", 479 "Atlantic/Reykjavik", 480 "Atlantic/St_Helena", 481 "Australia/ACT", 482 "Australia/Canberra", 483 "Australia/Currie", 484 "Australia/LHI", 485 "Australia/NSW", 486 "Australia/North", 487 "Australia/Queensland", 488 "Australia/South", 489 "Australia/Tasmania", 490 "Australia/Victoria", 491 "Australia/West", 492 "Australia/Yancowinna", 493 "Brazil/Acre", 494 "Brazil/DeNoronha", 495 "Brazil/East", 496 "Brazil/West", 497 "Canada/Atlantic", 498 "Canada/Central", 499 "Canada/Eastern", 500 "Canada/Mountain", 501 "Canada/Newfoundland", 502 "Canada/Pacific", 503 "Canada/Saskatchewan", 504 "Canada/Yukon", 505 "Chile/Continental", 506 "Chile/EasterIsland", 507 "Cuba", 508 "Egypt", 509 "Eire", 510 "Etc/GMT+0", 511 "Etc/GMT-0", 512 "Etc/GMT0", 513 "Etc/Greenwich", 514 "Etc/UCT", 515 "Etc/Universal", 516 "Etc/Zulu", 517 "Europe/Amsterdam", 518 "Europe/Belfast", 519 "Europe/Bratislava", 520 "Europe/Busingen", 521 "Europe/Copenhagen", 522 "Europe/Guernsey", 523 "Europe/Isle_of_Man", 524 "Europe/Jersey", 525 "Europe/Kiev", 526 "Europe/Ljubljana", 527 "Europe/Luxembourg", 528 "Europe/Mariehamn", 529 "Europe/Monaco", 530 "Europe/Nicosia", 531 "Europe/Oslo", 532 "Europe/Podgorica", 533 "Europe/San_Marino", 534 "Europe/Sarajevo", 535 "Europe/Skopje", 536 "Europe/Stockholm", 537 "Europe/Tiraspol", 538 "Europe/Uzhgorod", 539 "Europe/Vaduz", 540 "Europe/Vatican", 541 "Europe/Zagreb", 542 "Europe/Zaporozhye", 543 "GB", 544 "GB-Eire", 545 "GMT", 546 "GMT+0", 547 "GMT-0", 548 "GMT0", 549 "Greenwich", 550 "Hongkong", 551 "Iceland", 552 "Indian/Antananarivo", 553 "Indian/Christmas", 554 "Indian/Cocos", 555 "Indian/Comoro", 556 "Indian/Kerguelen", 557 "Indian/Mahe", 558 "Indian/Mayotte", 559 "Indian/Reunion", 560 "Iran", 561 "Israel", 562 "Jamaica", 563 "Japan", 564 "Kwajalein", 565 "Libya", 566 "Mexico/BajaNorte", 567 "Mexico/BajaSur", 568 "Mexico/General", 569 "NZ", 570 "NZ-CHAT", 571 "Navajo", 572 "PRC", 573 "Pacific/Chuuk", 574 "Pacific/Enderbury", 575 "Pacific/Funafuti", 576 "Pacific/Johnston", 577 "Pacific/Majuro", 578 "Pacific/Midway", 579 "Pacific/Pohnpei", 580 "Pacific/Ponape", 581 "Pacific/Saipan", 582 "Pacific/Samoa", 583 "Pacific/Truk", 584 "Pacific/Wake", 585 "Pacific/Wallis", 586 "Pacific/Yap", 587 "Poland", 588 "Portugal", 589 "ROC", 590 "ROK", 591 "Singapore", 592 "Turkey", 593 "UCT", 594 "US/Alaska", 595 "US/Aleutian", 596 "US/Arizona", 597 "US/Central", 598 "US/East-Indiana", 599 "US/Eastern", 600 "US/Hawaii", 601 "US/Indiana-Starke", 602 "US/Michigan", 603 "US/Mountain", 604 "US/Pacific", 605 "US/Samoa", 606 "UTC", 607 "Universal", 608 "W-SU", 609 "Zulu" 610 ]; 611 612 // We want to test all available named time zone identifiers (both primary and non-primary), 613 // but no ECMAScript built-in API exposes that list. So we use a union of two sources: 614 // 1. A hard-coded list of Zone and Link identifiers from the 2022g version of IANA TZDB. 615 // 2. Canonical IDs exposed by Intl.supportedValuesOf('timeZone'), which ensures that IDs 616 // added to TZDB later than 2022g will be tested. (New IDs are almost always added as primary.) 617 const ids = [...new Set([...timeZoneIdentifiers, ...Intl.supportedValuesOf("timeZone")])]; 618 for (const id of ids) { 619 const lower = id.toLowerCase(); 620 const upper = id.toUpperCase(); 621 assert.sameValue( 622 new Intl.DateTimeFormat("en", { timeZone: id }).resolvedOptions().timeZone, 623 id, 624 `Time zone created from string "${id}"` 625 ); 626 assert.sameValue( 627 new Intl.DateTimeFormat("en", { timeZone: upper }).resolvedOptions().timeZone, 628 id, 629 `Time zone created from string "${upper}"` 630 ); 631 assert.sameValue( 632 new Intl.DateTimeFormat("en", { timeZone: lower }).resolvedOptions().timeZone, 633 id, 634 `Time zone created from string "${lower}"` 635 ); 636 } 637 638 reportCompare(0, 0);