Maison >interface Web >js tutoriel >Comment formater des dates avec des décalages de fuseau horaire dans ISO 8601 à l'aide de JavaScript ?

Comment formater des dates avec des décalages de fuseau horaire dans ISO 8601 à l'aide de JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 00:28:09217parcourir

How to Format Dates with Timezone Offsets in ISO 8601 Using JavaScript?

Formatage ISO 8601 des dates avec décalage de fuseau horaire en JavaScript

Pour formater efficacement les dates avec décalage de fuseau horaire au format ISO 8601, suivez les directives suivantes :

W3C Recommandation :

Considérons l'exemple : "2002-10-10T12:00:00−05:00". Cela signifie midi le 10 octobre 2002, ce qui correspond à l'heure d'été du Centre (ainsi qu'à l'heure normale de l'Est aux États-Unis). Son équivalence en UTC est "2002-10-10T17:00:00Z", soit une différence de cinq heures.

Étapes de formatage :

  1. Acquérir l'heure locale : Utilisez new Date() pour obtenir l'heure locale. Par exemple, "var local = new Date().format("aaaa-MM-jjThh:mm:ss");" produit "2013-07-02T09:00:00".
  2. Calculer le décalage horaire UTC : Utilisez getTimezoneOffset() pour déterminer la différence entre l'heure locale et l'heure UTC. Par exemple, "var offset = local.getTimezoneOffset() / 60;" donne "7".
  3. Construire l'URL : Combinez l'heure locale et le décalage pour former le composant temporel de l'URL. "var durée = local "-" offset ":00";" produit "2013-07-02T09:00:00-7:00".

Gestion des décalages horaires négatifs :

Lorsque getTimezoneOffset() renvoie des valeurs négatives , tel que « -120 », le format doit respecter le format suivant : "2013-07-02T09:00:00 12:00".

Fonction d'assistance :

Cette fonction pratique simplifie le formatage de la date ISO 8601 :

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);
}

var dt = new Date();
console.log(toIsoString(dt));

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