extended-time-zone-names.js (4259B)
1 // |reftest| skip-if(!this.hasOwnProperty("Intl")) 2 3 const tests = { 4 "America/Los_Angeles": { 5 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 6 timeZoneName: "longGeneric", 7 locales: { 8 "en": "5/20/2021, Pacific Time", 9 "de": "20.5.2021, Nordamerikanische Westküstenzeit", 10 "fr": "20/05/2021 à heure du Pacifique nord-américain", 11 "ar-EG": "٢٠/٥/٢٠٢١ توقيت المحيط الهادي", 12 "th": "20/5/2564 เวลาแปซิฟิกในอเมริกาเหนือ", 13 "zh": "2021/5/20 北美太平洋时间", 14 "ja": "2021/5/20 アメリカ太平洋時間", 15 } 16 }, 17 "America/Los_Angeles": { 18 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 19 timeZoneName: "shortGeneric", 20 locales: { 21 "en": "5/20/2021, PT", 22 "de": "20.5.2021, Los Angeles Zeit", 23 "fr": "20/05/2021 à heure : Los Angeles", 24 "ar-EG": "٢٠/٥/٢٠٢١ توقيت Los Angeles", 25 "th": "20/5/2564 เวลาLos Angeles", 26 "zh": "2021/5/20 Los Angeles时间", 27 "ja": "2021/5/20 Los Angeles時間", 28 } 29 }, 30 "America/Los_Angeles": { 31 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 32 timeZoneName: "longOffset", 33 locales: { 34 "en": "5/20/2021, GMT-07:00", 35 "de": "20.5.2021, GMT-07:00", 36 "fr": "20/05/2021 à UTC−07:00", 37 "ar-EG": "٢٠/٥/٢٠٢١ غرينتش-٠٧:٠٠", 38 "th": "20/5/2564 GMT-07:00", 39 "zh": "2021/5/20 GMT-07:00", 40 "ja": "2021/5/20 GMT-07:00", 41 } 42 }, 43 "America/Los_Angeles": { 44 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 45 timeZoneName: "shortOffset", 46 locales: { 47 "en": "5/20/2021, GMT-7", 48 "de": "20.5.2021, GMT-7", 49 "fr": "20/05/2021 UTC−7", 50 "ar-EG": "٢٠/٥/٢٠٢١، غرينتش-٧", 51 "th": "20/5/2564 GMT-7", 52 "zh": "2021/5/20 GMT-7", 53 "ja": "2021/5/20 GMT-7", 54 } 55 }, 56 "Europe/Berlin": { 57 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 58 timeZoneName: "longGeneric", 59 locales: { 60 "en": "5/20/2021, Central European Time", 61 "de": "20.5.2021, Mitteleuropäische Zeit", 62 "fr": "20/05/2021 à heure d’Europe centrale", 63 "ar-EG": "٢٠/٥/٢٠٢١ توقيت وسط أوروبا", 64 "th": "20/5/2564 เวลายุโรปกลาง", 65 "zh": "2021/5/20 中欧时间", 66 "ja": "2021/5/20 中央ヨーロッパ時間", 67 } 68 }, 69 "Europe/Berlin": { 70 date: Date.UTC(2021, 5-1, 20, 12, 0, 0), 71 timeZoneName: "shortGeneric", 72 locales: { 73 "en": "5/20/2021, Germany Time", 74 "de": "20.5.2021, MEZ", 75 "fr": "20/05/2021 heure : Allemagne", 76 "ar-EG": "٢٠/٥/٢٠٢١، توقيت ألمانيا", 77 "th": "20/5/2564 เวลาเยอรมนี", 78 "zh": "2021/5/20 德国时间", 79 "ja": "2021/5/20 ドイツ時間", 80 } 81 }, 82 "Africa/Monrovia": { 83 date: Date.UTC(1971, 12-1, 6, 12, 0, 0), 84 timeZoneName: "longOffset", 85 locales: { 86 "en": "12/6/1971, GMT-00:44:30", 87 "de": "6.12.1971, GMT-00:44:30", 88 "fr": "06/12/1971 UTC−00:44:30", 89 "ar-EG": "٦/١٢/١٩٧١ غرينتش-٠٠:٤٤:٣٠", 90 "th": "6/12/2514 GMT-00:44:30", 91 "zh": "1971/12/6 GMT-00:44:30", 92 "ja": "1971/12/6 GMT-00:44:30", 93 } 94 }, 95 "Africa/Monrovia": { 96 date: Date.UTC(1971, 12-1, 6, 12, 0, 0), 97 timeZoneName: "shortOffset", 98 locales: { 99 "en": "12/6/1971, GMT-0:44:30", 100 "de": "6.12.1971, GMT-0:44:30", 101 "fr": "06/12/1971 UTC−0:44:30", 102 "ar-EG": "٦/١٢/١٩٧١، غرينتش-٠:٤٤:٣٠", 103 "th": "6/12/2514 GMT-0:44:30", 104 "zh": "1971/12/6 GMT-0:44:30", 105 "ja": "1971/12/6 GMT-0:44:30", 106 } 107 }, 108 }; 109 110 for (let [timeZone, {timeZoneName, date, locales}] of Object.entries(tests)) { 111 for (let [locale, expected] of Object.entries(locales)) { 112 let dtf = new Intl.DateTimeFormat(locale, {timeZone, timeZoneName}); 113 assertEq(dtf.format(date), expected); 114 115 let parts = dtf.formatToParts(date); 116 assertEq(parts.map(p => p.value).join(""), expected); 117 assertEq(parts.filter(p => p.type === "timeZoneName").length, 1); 118 119 assertEq(dtf.resolvedOptions().timeZoneName, timeZoneName); 120 } 121 } 122 123 if (typeof reportCompare === "function") 124 reportCompare(0, 0, "ok");