Date au format ISO avec fuseau horaire

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("Template Literals") subgraph Lab Skills javascript/variables -.-> lab-28451{{"Date au format ISO avec fuseau horaire"}} javascript/data_types -.-> lab-28451{{"Date au format ISO avec fuseau horaire"}} javascript/arith_ops -.-> lab-28451{{"Date au format ISO avec fuseau horaire"}} javascript/comp_ops -.-> lab-28451{{"Date au format ISO avec fuseau horaire"}} javascript/template_lit -.-> lab-28451{{"Date au format ISO avec fuseau horaire"}} end

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 :

  1. Ouvrez le Terminal/SSH et entrez node pour commencer à coder.
  2. Utilisez Date.prototype.getTimezoneOffset() pour obtenir le décalage horaire et le inverser. Stockez son signe dans diff.
  3. Définissez une fonction d'aide, pad(), qui normalise tout nombre passé en un entier en utilisant Math.floor() et Math.abs() et le complète à 2 chiffres, en utilisant String.prototype.padStart().
  4. Utilisez pad() et les méthodes intégrées dans le prototype Date pour 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.