このBlogは移転しました。今後は aish.dev を御覧ください。

Python 3.6の概要 (その6 - ローカル時間の曖昧さを解消)

夏時間を採用している地域では、1日に2回、同じ時間となる場合がある。たとえば、アメリカの東部時間では、11月第1日曜日の午前2時に夏時間が終了すると、また同じ日の午前1時にもどる。つまり、この日は午前1時は2回存在することとなり、このタイムゾーン2016年11月1日1時0分0秒 という時間は、正確には何時なのか、特定することはできない。

そこで、PEP 495: Local Time Disambiguation では、Datetimeオブジェクトにあらたに fold 属性を追加し、最初の2016年11月1日01:00:00 なら fold0、2回めなら1となるように変更された。

>>> import os
>>> os.environ['TZ'] = 'US/Eastern'  #  タイムゾーンをUS/Easternに設定
>>> datetime.fromtimestamp(1478408400) # 最初の 2016/11/06 01:00:00
datetime.datetime(2016, 11, 6, 1, 0)
>>> datetime.fromtimestamp(1478408400+3600) # 2回目の 2016/11/06 01:00:00
datetime.datetime(2016, 11, 6, 1, 0, fold=1)