Maison > interface Web > js tutoriel > Comment générer des dates au format ISO 8601 avec des décalages de fuseau horaire en JavaScript ?

Comment générer des dates au format ISO 8601 avec des décalages de fuseau horaire en JavaScript ?

Linda Hamilton
Libérer: 2024-11-30 06:05:13
original
876 Les gens l'ont consulté

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

Dates au format ISO 8601 avec décalage de fuseau horaire en JavaScript

En JavaScript, la construction de dates au format ISO 8601 avec décalage de fuseau horaire peut être difficile en raison de décalages horaires négatifs potentiels. Cet article aborde ce problème et propose une solution.

Comprendre le format

Le format ISO 8601 spécifie les dates comme suit : AAAA-MM-JJThh:mm:ss± hh:mm. Par exemple, 2002-10-10T12:00:00-05:00 représente midi le 10 octobre 2002, à l'heure d'été du Centre (cinq heures de retard sur UTC).

Recherche de l'heure locale et UTC. Décalage

Pour construire la chaîne ISO 8601, il faut d'abord obtenir l'heure locale en utilisant new Date() et calculez le décalage UTC à l'aide de getTimezoneOffset(). Le décalage est obtenu en minutes, nous le divisons donc par 60 pour obtenir le nombre d'heures.

Gestion des décalages horaires négatifs

La fonction getTimezoneOffset() peut renvoyer un résultat négatif valeurs. Dans de tels cas, nous devons formater le décalage différemment. Par exemple, un décalage de -120 minutes doit être affiché comme 02h00 (deux heures avant UTC).

Fonction d'aide pour le formatage

Pour simplifier le processus , une fonction d'assistance, toIsoString, peut être utilisée pour formater les dates au format ISO 8601 avec le fuseau horaire. offsets :

function toIsoString(date) {
  var tzo = -date.getTimezoneOffset(), // Make the offset positive
      dif = tzo >= 0 ? '+' : '-', // Determine the sign
      pad = function(num) { // Ensure two-digit representation
          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);
}
Copier après la connexion

Cette fonction prend une date comme argument et la formate selon la spécification ISO 8601, y compris le décalage du fuseau horaire.

Exemple d'utilisation

Le code suivant montre comment utiliser la fonction toIsoString :

var dt = new Date();
console.log(toIsoString(dt)); // Outputs the date in ISO 8601 format with timezone offset
Copier après la connexion

Utilisation Cette approche, vous pouvez facilement formater les dates en JavaScript selon la norme ISO 8601, en vous assurant qu'elles respectent le bon format.

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