UTC と特定のタイムゾーンの間に何時間の差があるかを取得する方法はありますか?
たとえば、UTC とヨーロッパ/アムステルダムの差は +2 時間です。
これのためにPythonに何かがありますか?
UTC と特定のタイムゾーンの間に何時間の差があるかを取得する方法はありますか?
たとえば、UTC とヨーロッパ/アムステルダムの差は +2 時間です。
これのためにPythonに何かがありますか?
タイムゾーンのある日時があるとしましょう:
import datetime
import pytz
d = datetime.datetime(2012, 1, 1, 0, 0, 0, tzinfo=pytz.utc)
In [54]: d
Out[54]: datetime.datetime(2012, 1, 1, 0, 0, tzinfo=<UTC>)
これをアムステルダム時間に変換するには、次を使用します。
ams = pytz.timezone('Europe/Amsterdam')
In [55]: d.astimezone(ams)
Out[55]: datetime.datetime(2012, 1, 1, 1, 0, tzinfo=<DstTzInfo 'Europe/Amsterdam' CET+1:00:00 STD>)
pst = timezone('US/Pacific')
In [118]: d.astimezone(pst)
Out[118]: datetime.datetime(2011, 12, 31, 16, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
タイムゾーンのない日時 (単純な日時) がある場合は、次の方法で変換できます。
dd = datetime.datetime(2012, 2, 2, 0, 0)
ams.localize(naive_dt).astimezone(pst) # set it as 'ams' first, then convert to pst
Out[131]: datetime.datetime(2012, 2, 1, 15, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
2 つのタイムゾーンの違いを確認するには:
In [137]: ams.utcoffset(datetime.datetime(2012,1,1))
Out[137]: datetime.timedelta(0, 3600)
In [138]: pst.utcoffset(datetime.datetime(2012,1,1))
Out[138]: datetime.timedelta(-1, 57600)
したがって、ams は UTC によると +1H であり、pst は -8 (-1 日と +16H) です。
編集: docsで説明されているように、これ:
datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam)
動作しないでしょう。