Maison >développement back-end >Tutoriel Python >Pourquoi le fuseau horaire « Asie/Hong_Kong » de Pytz affiche-t-il des décalages incohérents ?

Pourquoi le fuseau horaire « Asie/Hong_Kong » de Pytz affiche-t-il des décalages incohérents ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 15:56:101069parcourir

Why Does Pytz's `Asia/Hong_Kong` Timezone Show Inconsistent Offsets?

Anomalies datetime avec les fuseaux horaires Pytz

Pytz, une bibliothèque Python répandue pour la gestion des fuseaux horaires, présente parfois un comportement de décalage inhabituel. Notamment, lors de la demande du fuseau horaire « Asie/Hong_Kong », pytz peut renvoyer un décalage de 7:37:00, ce qui semble incohérent.

Pour illustrer, considérons le code suivant :

import pytz
pytz.timezone('Asia/Hong_Kong')

La sortie affiche les informations de fuseau horaire comme :

<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>

De manière incohérente, en utilisant la méthode de localisation pour attacher le fuseau horaire de Hong Kong à une instance datetime donne des résultats différents :

hk = pytz.timezone('Asia/Hong_Kong')
hk_dt = hk.localize(datetime(2012, 1, 1))

La comparaison des dates et heures révèle :

dt1 = datetime(2012,1,1,tzinfo=hk)
if dt1 > hk_dt:
    print "Why?"

De façon inattendue, dt1 est évalué comme supérieur à hk_dt.

Explication

Cette anomalie survient en raison des changements de fuseaux horaires et des décalages dans le temps. Pytz attribue le nom et le décalage disponibles les plus anciens à chaque objet de fuseau horaire qu'il crée. Cependant, lorsque vous utilisez la méthode de localisation pour attacher la zone à une date, elle intègre le nom précis et le décalage correspondant à l'heure spécifiée.

En conclusion, le simple fait d'utiliser le constructeur datetime pour attribuer un fuseau horaire à une date exclut il ne s'ajuste pas correctement, conduisant à l'incohérence observée.

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