[PYTHON] Les spécifications de pytz ont changé

Le format du fuseau horaire japonais a changé dans la version pytz 2017.2 publiée le 30/03/2017 (bug ??)

La dernière version (version 2017.2) de la bibliothèque liée au fuseau horaire python gérée par Stuart Bishop a un comportement étrange, je vais donc la partager. http://pythonhosted.org/pytz/#localized-times-and-date-arithmetic

Qu'est ce qui a changé

jusqu'à maintenant

In [1]: import pytz

In [2]: pytz.__version__
Out[2]: '2016.10'

In [3]: pytz.timezone('Asia/Tokyo')
Out[3]: <DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>

dernière version

In [1]: import pytz

In [2]: pytz.__version__
Out[2]: '2017.2'

In [3]: pytz.timezone('Asia/Tokyo')
Out[3]: <DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>

Il y a une possibilité de bug car je n'ai trouvé aucun commentaire de l'auteur.

Impact de ceci

Pour cette raison, si vous convertissez UTC-> JST en lisant dans DB, il peut être désactivé de 19 minutes. C'est bogué parce qu'il y a des processus qui changent simplement et ne changent pas. Le traitement qui change et le traitement qui ne change pas sont résumés ci-dessous.

Traitement auquel JST est accordé comme auparavant

In [8]: tz = pytz.timezone('Asia/Tokyo')

In [10]: tz.localize(datetime.datetime.now())
Out[10]: datetime.datetime(2017, 4, 5, 9, 24, 56, 215625, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)

In [11]: datetime.datetime.now(tz=pytz.utc).astimezone(tz)
Out[11]: datetime.datetime(2017, 4, 5, 18, 27, 33, 912014, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)

Traitement qui donne au LMT 19 minutes de temps d'arrêt comme indiqué par tzinfo

In [9]: datetime.datetime.now().replace(tzinfo=tz)
Out[9]: datetime.datetime(2017, 4, 5, 9, 24, 45, 694185, tzinfo=<DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>)

Quand je l'ai essayé, JST est correctement affecté dans un traitement non destructif tel que tz.localize, datetime.astimezone (tz). On sait que JST ne fonctionne pas lors de l'utilisation du code qui attribue de force le fuseau horaire avec datetime.replace (tz), et il se décale de 19 minutes.

Autre

Enfin (sujet principal)

  1. Ceux qui savent comment obtenir le fuseau horaire JST comme avant ――Veuillez aider !! Je vous serais reconnaissant si vous pouviez me le faire savoir dans les commentaires !!
  2. De plus, si vous utilisez datetime.replace (tzinfo = tz) sans le savoir ――C'est dangereux, alors réparez-le !! Votre horloge est éteinte de 19 minutes !!
  3. (Puisque le fuseau horaire est critique, j'aimerais que vous le publiiez dans Python official, pas dans une bibliothèque comme pytz que vous gérez individuellement.) --Il semble que Python3 ait datetime.timezone, donc je me demande s'il vaut mieux y passer ...

Recommended Posts

Les spécifications de pytz ont changé
Notez que les spécifications de Pandas loc ont changé.
L'utilisation de TensorBoard a légèrement changé
Le début de cif2cell
Le sens de soi
le zen de Python
L'histoire de sys.path.append ()
J'ai vérifié les spécifications de sortie du LSTM bidirectionnel de PyTorch
Veuillez noter que le dernier lien d'ius a changé
L'attitude que les programmeurs devraient avoir (Le Zen de Python)
La vengeance des types: la vengeance des types
Avoir le graphique d'équation de la fonction linéaire dessiné en Python
Aligner la version de chromedriver_binary
Grattage du résultat de "Schedule-kun"
10. Compter le nombre de lignes
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
Comparez les polices de jupyter-themes
Obtenez le nombre de chiffres
Expliquez le code de Tensorflow_in_ROS
Réutiliser les résultats du clustering
GoPiGo3 du vieil homme
Calculez le nombre de changements
Changer le thème de Jupyter
La popularité des langages de programmation
Changer le style de matplotlib
Visualisez la trajectoire de Hayabusa 2
À propos des composants de Luigi
Composants liés du graphique
Filtrer la sortie de tracemalloc
À propos des fonctionnalités de Python
Simulation du contenu du portefeuille
Le pouvoir des pandas: Python