for (let timeZone of utcTimeZones) { for (let map of tzMapper) {
let dtf = new Intl.DateTimeFormat(undefined, {timeZone: map(timeZone)});
assertEq(dtf.resolvedOptions().timeZone, "UTC");
}
}
for (let timeZone of invalidTimeZones) { for (let map of tzMapper) {
assertThrowsInstanceOf(() => { new Intl.DateTimeFormat(undefined, {timeZone: map(timeZone)});
}, RangeError);
}
}
// GMT[+-]hh is invalid, but Etc/GMT[+-]hh is a valid IANA time zone. for (let gmtOffset = -14; gmtOffset <= 12; ++gmtOffset) { // Skip Etc/GMT0. if (gmtOffset === 0) continue;
let timeZone = `Etc/GMT${gmtOffset > 0 ? "+" : ""}${gmtOffset}`; for (let map of tzMapper) {
let dtf = new Intl.DateTimeFormat(undefined, {timeZone: map(timeZone)});
assertEq(dtf.resolvedOptions().timeZone, timeZone);
}
}
const invalidEtcGMTNames = [ // Out of bounds GMT offset. "Etc/GMT-15", "Etc/GMT+13",
// Etc/GMT[+-]hh:mm isn't a IANA time zone name. "Etc/GMT-10:00", "Etc/GMT+10:00", "Etc/GMT-1000", "Etc/GMT+1000",
];
for (let timeZone of invalidEtcGMTNames) { for (let map of tzMapper) {
assertThrowsInstanceOf(() => { new Intl.DateTimeFormat(undefined, {timeZone: map(timeZone)});
}, RangeError);
}
}
// RangeError is thrown for primitive values, because ToString(<primitive>) // isn't a valid time zone name. for (let nonStrings of [null, 0, 0.5, true, false]) {
assertThrowsInstanceOf(() => { new Intl.DateTimeFormat(undefined, {timeZone: nonStrings});
}, RangeError);
}
// |undefined| or absent "timeZone" option selects the default time zone.
{
let {timeZone: tzAbsent} = new Intl.DateTimeFormat(undefined, {}).resolvedOptions();
let {timeZone: tzUndefined} = new Intl.DateTimeFormat(undefined, {timeZone: undefined}).resolvedOptions();
// The default time zone isn't a link name.
let {timeZone: tzDefault} = new Intl.DateTimeFormat(undefined, {timeZone: tzAbsent}).resolvedOptions();
assertEq(tzDefault, tzAbsent);
}
// Objects are converted through ToString().
{
let timeZone = "Europe/Warsaw";
let obj = {
toString() { return timeZone;
}
};
let dtf = new Intl.DateTimeFormat(undefined, {timeZone: obj});
assertEq(dtf.resolvedOptions().timeZone, timeZone);
}
if (typeof reportCompare === "function")
reportCompare(0, 0, "ok");
Messung V0.5
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.