Heim > Fragen und Antworten > Hauptteil
Ich möchte einen Zeitstempel in der vom Benutzer angegebenen Zeitzone anzeigen können. Mir ist aufgefallen, dass selbst bei einer dedizierten Bibliothek wie date-fns-tz scheinbar Werte zurückgegeben werden, die keinen Sinn ergeben.
Unter der Haube verwenden sie offenbar Intl, und wenn ich das Modul verwende, scheint es nicht den richtigen Wert zu liefern.
const zones = ['PST', 'MST', 'CST', 'EST']; zones.forEach((timeZone) => console.log( new Intl.DateTimeFormat('en-US', { timeZone, timeStyle: 'full', dateStyle: 'full', }).format(1588743894000) ) );
Ausgabe:
Tuesday, May 5, 2020 at 10:44:54 PM Pacific Daylight Time Tuesday, May 5, 2020 at 10:44:54 PM GMT-07:00 Wednesday, May 6, 2020 at 12:44:54 AM Central Daylight Time Wednesday, May 6, 2020 at 12:44:54 AM GMT-05:00
Aber sollten das nicht vier verschiedene Werte sein?
P粉2327937652024-04-01 00:42:27
您正在指定三字母时区缩写,它期望的是 IANA 时区 (https://tc39.es/ecma402/#sec-time-zone-names)。我相信它很困惑,因为您正在通过白天的标准时区。
const zones = ["America/Los_Angeles", "America/Denver", "America/Chicago", "America/New_York"] zones.forEach(timeZone => console.log(new Intl.DateTimeFormat('en-US', { timeZone, timeStyle: "full", dateStyle: "full"}).format(1588743894000)));
这会产生:
Tuesday, May 5, 2020 at 10:44:54 PM Pacific Daylight Time Tuesday, May 5, 2020 at 11:44:54 PM Mountain Daylight Time Wednesday, May 6, 2020 at 12:44:54 AM Central Daylight Time Wednesday, May 6, 2020 at 1:44:54 AM Eastern Daylight Time