您可以使用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设置时区does not always return the correct 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