Maison >interface Web >js tutoriel >L'heure d'été est-elle en vigueur ? Détection précise de l'heure d'été en JavaScript.

L'heure d'été est-elle en vigueur ? Détection précise de l'heure d'été en JavaScript.

DDD
DDDoriginal
2024-11-24 22:58:10709parcourir

Is Daylight Saving Time in Effect? Detecting DST Accurately in JavaScript.

Détection DST en JavaScript : vérification de l'état pour une manipulation précise de la date

Dans les situations où des calculs d'heure précis, tels que l'affichage de l'heure ou la manipulation de la date, sont cruciaux, il est essentiel de tenir compte de l’heure d’été (DST). Cet ajustement saisonnier peut introduire des écarts dans les calculs de temps s'il n'est pas pris en compte rapidement.

Pour répondre à ce problème, un extrait de code JavaScript a été développé pour vérifier si l'heure d'été est en vigueur à un moment donné. La logique de base repose sur le fait que getTimezoneOffset renvoie une valeur plus élevée à l'heure standard par rapport à l'heure d'été. En déterminant le décalage attendu pendant l'heure normale et en le comparant au décalage de la date donnée, on peut déterminer si l'heure standard ou l'heure d'été est en jeu.

Il est à noter que getTimezoneOffset renvoie des valeurs positives pour les fuseaux horaires à l'ouest de UTC et valeurs négatives pour ceux à l’est de UTC. De plus, le décalage est généralement exprimé en heures, tandis que getTimezoneOffset renvoie le décalage en minutes. Par exemple, Los Angeles est UTC-8h à l'heure standard et UTC-7h à l'heure d'été. En décembre, getTimezoneOffset donnerait 480 pour Los Angeles (480 minutes positives).

Le code JavaScript suivant développe ce concept :

Date.prototype.stdTimezoneOffset = function () {
    var jan = new Date(this.getFullYear(), 0, 1);
    var jul = new Date(this.getFullYear(), 6, 1);
    return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}

Date.prototype.isDstObserved = function () {
    return this.getTimezoneOffset() < this.stdTimezoneOffset();
}

var today = new Date();
if (today.isDstObserved()) { 
    alert ("Daylight saving time!");
}

Ce code vérifie si l'heure d'été est actuellement en vigueur en fonction sur la différence getTimezoneOffset entre la date donnée et l'heure standard attendue. En utilisant cette logique, les développeurs peuvent calculer avec précision les dates et les heures tout en prenant en compte les implications de l'heure d'été.

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