Introduction
Dans ce laboratoire, nous allons apprendre à convertir une date au format ISO étendu (ISO 8601), y compris le décalage horaire. Nous utiliserons la méthode Date.prototype.getTimezoneOffset() pour obtenir le décalage horaire et le inverser. Ensuite, nous définirons une fonction d'aide pour normaliser tout nombre passé en un entier et le compléter à 2 chiffres en utilisant String.prototype.padStart(). Enfin, nous utiliserons les méthodes intégrées dans le prototype Date pour construire la chaîne ISO 8601 avec décalage horaire. À la fin de ce laboratoire, vous aurez une meilleure compréhension de la manière de manipuler les dates en JavaScript.
Conversion de dates au format ISO avec fuseau horaire
Pour convertir une date au format ISO étendu (ISO 8601), y compris le décalage horaire, suivez ces étapes :
- Ouvrez le Terminal/SSH et entrez
nodepour commencer à coder. - Utilisez
Date.prototype.getTimezoneOffset()pour obtenir le décalage horaire et le inverser. Stockez son signe dansdiff. - Définissez une fonction d'aide,
pad(), qui normalise tout nombre passé en un entier en utilisantMath.floor()etMath.abs()et le complète à2chiffres, en utilisantString.prototype.padStart(). - Utilisez
pad()et les méthodes intégrées dans le prototypeDatepour construire la chaîne ISO 8601 avec décalage horaire.
Voici le code que vous pouvez utiliser :
const toISOStringWithTimezone = (date) => {
const tzOffset = -date.getTimezoneOffset();
const diff = tzOffset >= 0 ? "+" : "-";
const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, "0");
return (
date.getFullYear() +
"-" +
pad(date.getMonth() + 1) +
"-" +
pad(date.getDate()) +
"T" +
pad(date.getHours()) +
":" +
pad(date.getMinutes()) +
":" +
pad(date.getSeconds()) +
diff +
pad(tzOffset / 60) +
":" +
pad(tzOffset % 60)
);
};
Utilisez la fonction toISOStringWithTimezone() avec un objet new Date() en tant qu'argument pour obtenir la date au format ISO avec décalage horaire. Par exemple :
toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'
Sommaire
Félicitations ! Vous avez terminé le laboratoire Date au format ISO avec fuseau horaire. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.