Wie zeige ich den Wert eines Zeitstempels in Standardzeit in vier Zeitzonen mithilfe von Intl.dateTimeFormat an?
P粉724737511
P粉724737511 2024-03-31 12:28:02
0
1
542

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粉724737511
P粉724737511

Antworte allen(1)
P粉232793765

您正在指定三字母时区缩写,它期望的是 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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage