datetime.timedelta
次を使用してオフセットを取得できます。
offset = current_time.utcoffset()
次に、 current_time にオフセットを加算または減算して、目的の日時を取得できます。
import datetime as DT
import dateutil.tz as tz
import dateutil
current_time = DT.datetime.utcnow().replace(tzinfo=tz.gettz('Asia/Calcutta'))
print(current_time)
# 2013-05-12 18:33:19.368122+05:30
offset = current_time.utcoffset()
naive_time = current_time.replace(tzinfo=None)
print(naive_time)
# 2013-05-12 18:33:19.368122
print(naive_time + offset)
# 2013-05-13 00:03:19.368122
UTC 時間が必要な場合は、オフセットを差し引く必要があることに注意してください。
print(naive_time - offset)
# 2013-05-12 13:03:19.368122
ただし、UTC 日時を取得するより簡単な方法は、次のastimezone
メソッドを使用することです。
utc = dateutil.tz.tzutc()
print(current_time.astimezone(utc))
# 2013-05-12 13:03:19.368122+00:00
dateutil
最後に、 と を使用しreplace
てタイムゾーンを設定しても、常に正しい time が返されるとは限らないことに注意してください。pytzでそれを行う方法は次のとおりです。
import pytz
calcutta = pytz.timezone('Asia/Calcutta')
utc = pytz.utc
current_time = calcutta.localize(DT.datetime.utcnow())
print(current_time)
# 2013-05-12 18:33:19.368705+05:30
print(current_time.astimezone(utc))
# 2013-05-12 13:03:19.368705+00:00