Initialiser la date JavaScript sur un fuseau horaire particulier
-
Utilisez les méthodes
Intl.DateTimeFormat
etformat()
pour initialiser la date JavaScript sur un fuseau horaire particulier -
Utilisez la méthode
toLocaleString()
pour 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
:
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.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 sontsecond
,minute
,hour
,day
,month
etyear
, 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 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