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
Libérer: 2024-12-04 00:28:09
original
213 Les gens l'ont consulté

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));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal