Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip-if(!this.hasOwnProperty("Intl"))
const msPerHour = 60 * 60 * 1000;
const tzOffset = 8 * msPerHour;
const date = new Date(Date.UTC(2024, 0, 1, 12, 30, 45) + tzOffset);
const timeZone = "America/Los_Angeles";
const dateStyles = {
en: {
full: "Monday, January 1, 2024",
long: "January 1, 2024",
medium: "Jan 1, 2024",
short: "1/1/24",
},
fr: {
full: "lundi 1 janvier 2024",
long: "1 janvier 2024",
medium: "1 janv. 2024",
short: "01/01/2024",
},
de: {
full: "Montag, 1. Januar 2024",
long: "1. Januar 2024",
medium: "01.01.2024",
short: "01.01.24",
},
es: {
full: "lunes, 1 de enero de 2024",
long: "1 de enero de 2024",
medium: "1 ene 2024",
short: "1/1/24",
},
ja: {
full: "2024年1月1日月曜日",
long: "2024年1月1日",
medium: "2024/01/01",
short: "2024/01/01",
},
"ar-EG": {
full: "الاثنين، ١ يناير ٢٠٢٤",
long: "١ يناير ٢٠٢٤",
medium: "٠١‏/٠١‏/٢٠٢٤",
short: "١‏/١‏/٢٠٢٤",
},
zh: {
full: "2024年1月1日星期一",
long: "2024年1月1日",
medium: "2024年1月1日",
short: "2024/1/1",
},
"zh-u-ca-chinese": {
full: "2023癸卯年十一月二十星期一",
long: "2023癸卯年十一月二十",
medium: "2023年十一月二十",
short: "2023/11/20",
},
};
const timeStyles = {
en: {
full: "12:30:45 PM Pacific Standard Time",
long: "12:30:45 PM PST",
medium: "12:30:45 PM",
short: "12:30 PM",
},
fr: {
full: "12:30:45 heure normale du Pacifique nord-américain",
long: "12:30:45 UTC−8",
medium: "12:30:45",
short: "12:30",
},
de: {
full: "12:30:45 Nordamerikanische Westküsten-Normalzeit",
long: "12:30:45 GMT-8",
medium: "12:30:45",
short: "12:30",
},
es: {
full: "12:30:45 (hora estándar del Pacífico)",
long: "12:30:45 GMT-8",
medium: "12:30:45",
short: "12:30",
},
ja: {
full: "12時30分45秒 アメリカ太平洋標準時",
long: "12:30:45 GMT-8",
medium: "12:30:45",
short: "12:30",
},
"ar-EG": {
full: "١٢:٣٠:٤٥ م توقيت المحيط الهادي الرسمي",
long: "١٢:٣٠:٤٥ م غرينتش-٨",
medium: "١٢:٣٠:٤٥ م",
short: "١٢:٣٠ م",
},
zh: {
full: "北美太平洋标准时间 12:30:45",
long: "GMT-8 12:30:45",
medium: "12:30:45",
short: "12:30",
},
};
for (let [locale, styles] of Object.entries(dateStyles)) {
for (let [dateStyle, expected] of Object.entries(styles)) {
let df = new Intl.DateTimeFormat(locale, {dateStyle, timeZone});
assertEq(df.format(date), expected);
}
}
for (let [locale, styles] of Object.entries(timeStyles)) {
for (let [timeStyle, expected] of Object.entries(styles)) {
let df = new Intl.DateTimeFormat(locale, {timeStyle, timeZone});
assertEq(df.format(date), expected);
}
}
if (typeof reportCompare === "function")
reportCompare(0, 0, 'ok');