1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
if (typeof Intl === "object") {
const localeSep = [,,].toLocaleString();
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
assertEq([date].toLocaleString("en-us", {timeZone: "UTC"}), "12/12/2012, 3:00:00 AM");
assertEq([date].toLocaleString(["de", "en"], {timeZone: "UTC"}), "12.12.2012, 03:00:00");
assertEq([date].toLocaleString("th-th", {timeZone: "UTC"}), "12/12/2555 03:00:00");
assertEq([date].toLocaleString("th-th-u-nu-thai", {timeZone: "UTC"}), "๑๒/๑๒/๒๕๕๕ ๐๓:๐๐:๐๐");
const sampleValues = [
date, new Date(0),
];
const sampleLocales = [
void 0,
"en",
"th-th-u-nu-thai",
"ja-jp",
"ar-ma-u-ca-islamicc",
["tlh", "de"],
];
const numericFormatOptions = {
timeZone: "UTC",
year: "numeric", month: "numeric", day: "numeric",
hour: "numeric", minute: "numeric", second: "numeric",
};
const longFormatOptions = {
timeZone: "UTC",
year: "numeric", month: "long", day: "numeric",
hour: "numeric", minute: "numeric", second: "numeric"
};
const sampleOptions = [
{timeZone: "UTC"},
longFormatOptions,
];
for (let locale of sampleLocales) {
for (let options of sampleOptions) {
let dtfOptions;
if (options === longFormatOptions) {
dtfOptions = longFormatOptions;
} else {
dtfOptions = numericFormatOptions;
}
let dtf = new Intl.DateTimeFormat(locale, dtfOptions);
let expected = sampleValues.map(dtf.format).join(localeSep);
assertEq(sampleValues.toLocaleString(locale, options), expected);
}
}
}
if (typeof reportCompare === "function")
reportCompare(true, true);
|