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