Initialiser la date JavaScript sur un fuseau horaire particulier

Harshit Jindal 12 octobre 2023
  1. Utilisez les méthodes Intl.DateTimeFormat et format() pour initialiser la date JavaScript sur un fuseau horaire particulier
  2. Utilisez la méthode toLocaleString() pour initialiser la date JavaScript sur un fuseau horaire particulier
Initialiser la date JavaScript sur un fuseau horaire particulier

Ce tutoriel explique comment initialiser la date JavaScript sur un fuseau horaire particulier.

L’objet date de JavaScript fonctionne avec UTC en interne mais affiche la sortie en fonction de l’heure locale de l’ordinateur d’exploitation. L’objet date n’a aucune notion de fuseau horaire. Aucun objet chaîne n’est déclaré. Il s’agit simplement d’une mesure du nombre de millisecondes écoulées depuis le 1970-01-01 00:00:00 UTC. Lors de la sortie de l’heure, il prend automatiquement en compte le fuseau horaire local de l’ordinateur et s’applique à la représentation interne. Cela ne fonctionne pas avec des fuseaux horaires différents. Nous avons donc besoin de l’aide de fonctions et de bibliothèques externes pour effectuer de telles opérations.

Utilisez les méthodes Intl.DateTimeFormat et format() pour initialiser la date JavaScript sur un fuseau horaire particulier

L’objet JavaScript Intl est l’aide pour l’API d’internationalisation JavaScript. Il nous fournit de nombreuses fonctions pour la conversion de date/heure, de chaînes et de nombres. L’objet Intl utilise le DateTimeFormat pour formater les chaînes date-heure. Cela a une méthode format qui prend la date et la convertit en un fuseau horaire différent en utilisant les paramètres régionaux et les options fournies comme argument au formateur. Cette méthode formatera la date dans le fuseau horaire requis et la convertira en une chaîne.

Le paramètre pris par la fonction format() est la date. Nous avons besoin des arguments suivants pour la formation de l’objet Intl.DateTimeFormat :

  1. locales : C’est un tableau de chaînes contenant des balises de langue et de locale. Normalement, c’est un paramètre facultatif mais il est nécessaire pour notre propos. Pour changer le fuseau horaire, nous pouvons simplement spécifier le code de langue BCP et le fuseau horaire requis.
  2. options : c’est un objet utilisé pour spécifier des propriétés pour effectuer des comparaisons. C’est également un paramètre facultatif qui peut être utilisé pour spécifier le style et les unités d’affichage. Certaines des propriétés sont second, minute, hour, day, month et year, etc.

Par exemple : Nous pouvons passer un objet d’options comme { hour: 'numeric', hour12: false, minute: 'numeric', timeZoneName: 'short'}

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let formatter =
      new Intl.DateTimeFormat('en-US', {timeZone: 'America/Denver'});
  let usDate = formatter.format(date);
  console.log('Date in USA: ' + usDate);
}

Production

Date in India: Mon Jun 28 2021 08: 30: 00 GMT + 0530(India Standard Time)
VM1504: 7 Date in USA: 6 / 27 / 2021

Dans la fonction ci-dessus, nous créons d’abord un objet Date en utilisant le constructeur Date(). Ensuite, nous allons créer un formateur en utilisant Intl.DateTimeFormat en spécifiant la locale, c’est-à-dire la balise de langue BCP et le timeZone vers lequel nous voulons convertir. Nous utilisons ensuite ce formateur pour convertir la date dans le fuseau horaire requis.

Utilisez la méthode toLocaleString() pour initialiser la date JavaScript sur un fuseau horaire particulier

La méthode toLocaleString() est la plus couramment utilisée pour changer de fuseau horaire car elle est plus simple à utiliser et peut être appelée directement sur une Date. Il fonctionne de la même manière que le Intl.DateTimeFormat. Il prend également la chaîne de paramètres régionaux et les options comme arguments et renvoie une chaîne avec des dates formatées en fonction de celles-ci. L’avantage de cette méthode est que contrairement à la méthode ci-dessus, elle convertit l’heure en fonction du fuseau horaire du pays et la renvoie dans la chaîne.

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let usDate = date.toLocaleString('en-US', {timeZone: 'America/New_York'});
  console.log('Date in USA: ' + usDate);
}

Production

Date in India: Mon Jun 28 2021 08: 30: 00 GMT + 0530(India Standard Time)
Date in USA: 6 / 27 / 2021, 11: 00: 00 PM

Dans la fonction ci-dessus, nous créons d’abord un objet Date en utilisant le constructeur Date(). Nous appelons la fonction toLocaleString à la date en spécifiant la language tag et le timeZone et obtenons la date/heure convertie dans un fuseau horaire différent.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Article connexe - JavaScript DateTime