Maison >interface Web >js tutoriel >Comment formater une date JavaScript en ISO 8601 avec décalage de fuseau horaire ?

Comment formater une date JavaScript en ISO 8601 avec décalage de fuseau horaire ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 12:28:11293parcourir

How to Format a JavaScript Date in ISO 8601 with Timezone Offset?

Formatage ISO 8601 de la date avec décalage de fuseau horaire en JavaScript

Cet article aborde le problème courant de savoir comment formater une date JS dans l'ISO Format 8601 avec un décalage par rapport à UTC. Il commence par discuter de l'objectif de formater l'URL dans le format correct, sur la base de la recommandation du W3C.

La solution implique une série d'étapes :

  1. Obtenir le local time: La nouvelle fonction Date() permet d'obtenir l'heure locale dans le format souhaité (par exemple, "aaaa-MM-jjThh:mm:ss").
  2. Calcul du décalage horaire UTC : La méthode getTimezoneOffset() est appelée pour calculer la différence entre l'heure locale et l'heure UTC. Le résultat est ensuite divisé par 60 pour exprimer le décalage en heures.
  3. Construction de l'URL : L'heure locale et le décalage UTC calculé sont combinés pour former la chaîne de durée, qui représente l'heure souhaitée Date au format ISO 8601 avec décalage de fuseau horaire (par exemple, "2013-07-02T09:00:00-7:00").

Cependant, la question se pose de savoir comment gérer les valeurs négatives pour getTimezoneOffset(). La réponse fournie utilise une fonction d'assistance pour résoudre ce problème :

function toIsoString(date) {
  var tzo = -date.getTimezoneOffset(),
      dif = tzo >= 0 ? '+' : '-',
      pad = function(num) {
          return (num < 10 ? '0' : '') + num;
      };

  return date.getFullYear() +
      '-' + pad(date.getMonth() + 1) +
      '-' + pad(date.getDate()) +
      'T' + pad(date.getHours()) +
      ':' + pad(date.getMinutes()) +
      ':' + pad(date.getSeconds()) +
      dif + pad(Math.floor(Math.abs(tzo) / 60)) +
      ':' + pad(Math.abs(tzo) % 60);
}

Cette fonction d'assistance prend une date comme argument et renvoie une chaîne ISO 8601 correctement formatée, y compris le décalage du fuseau horaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn