Die neueste Version (Version 2017.2) der von Stuart Bishop verwalteten Python-Zeitzonenbibliothek weist ein seltsames Verhalten auf, daher werde ich sie weitergeben. http://pythonhosted.org/pytz/#localized-times-and-date-arithmetic
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>
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>
Es besteht die Möglichkeit eines Fehlers, da ich keine Kommentare des Autors finden konnte.
Wenn Sie UTC-> JST durch Lesen aus der Datenbank konvertieren, kann dies aus diesem Grund um 19 Minuten deaktiviert sein. Es ist fehlerhaft, weil es einige Prozesse gibt, die sich nur verschieben und nicht verschieben. Die Verarbeitung, die sich verschiebt, und die Verarbeitung, die sich nicht verschiebt, sind nachstehend zusammengefasst.
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>)
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>)
Als ich es ausprobiert habe, ist JST in der zerstörungsfreien Verarbeitung wie tz.localize, datetime.astimezone (tz) ordnungsgemäß zugewiesen. Es ist bekannt, dass JST nicht funktioniert, wenn der Code verwendet wird, der die Zeitzone zwangsweise mit datetime.replace (tz) zuweist, und sich um 19 Minuten verschiebt.
Recommended Posts