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!