Maison  >  Questions et réponses  >  le corps du texte

Comment afficher la valeur d'un horodatage à l'heure standard dans quatre fuseaux horaires à l'aide de Intl.dateTimeFormat ?

Je souhaite pouvoir afficher un horodatage dans le fuseau horaire indiqué par l'utilisateur. J'ai remarqué que même avec une bibliothèque dédiée comme date-fns-tz, elle semble renvoyer des valeurs qui n'ont aucun sens.

Sous le capot, ils utilisent apparemment Intl et lorsque j'utilise le module, il ne semble pas fournir la valeur correcte.

const zones = ['PST', 'MST', 'CST', 'EST'];
zones.forEach((timeZone) =>
  console.log(
    new Intl.DateTimeFormat('en-US', {
      timeZone,
      timeStyle: 'full',
      dateStyle: 'full',
    }).format(1588743894000)
  )
);

Sortie :

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

Mais cela ne devrait-il pas être quatre valeurs différentes ?

P粉724737511P粉724737511182 Il y a quelques jours353

répondre à tous(1)je répondrai

  • P粉232793765

    P粉2327937652024-04-01 00:42:27

    Vous spécifiez une abréviation de fuseau horaire à trois lettres, qui attend le fuseau horaire IANA (https://tc39.es/ecma402/#sec-time-zone-names). Je pense que c'est confus car vous dépassez le fuseau horaire standard pendant la journée.

    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)));

    Cela produit :

    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

    répondre
    0
  • Annulerrépondre