Heim  >  Fragen und Antworten  >  Hauptteil

Wie zeige ich den Wert eines Zeitstempels in Standardzeit in vier Zeitzonen mithilfe von Intl.dateTimeFormat an?

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粉724737511P粉724737511182 Tage vor356

Antworte allen(1)Ich werde antworten

  • P粉232793765

    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

    Antwort
    0
  • StornierenAntwort