在Python中根据时区名称获取UTC偏移量
我想知道怎么在Python中根据时区名称获取UTC偏移量。
比如说,我有一个时区名称是Asia/Jerusalem
,我想得到+0200
这个结果。
5 个回答
2
我在把Python的日期时间对象转换成UTC时间戳时遇到了类似的问题。我的日期时间对象没有时区信息(很简单),所以astimezone
这个方法就没法用了。
为了解决这个问题,我让我的日期时间对象有了时区信息,然后就可以使用上面提到的方法了。
import pytz
system_tz = pytz.timezone(constants.TIME_ZONE)
localized_time = system_tz.localize(time_of_meeting)
fmt = "%Y%m%dT%H%M%S" + 'Z'
return localized_time.astimezone(pytz.utc).strftime(fmt)
这里的constants.TIME_ZONE
是我存储的对象的默认时区。
希望这能帮助到那些想把Python日期时间对象转换成UTC的人。转换后,可以随意格式化。
84
你有没有试过使用 pytz 这个项目,以及 utcoffset
方法?
比如说:
>>> import datetime
>>> import pytz
>>> pacific_now = datetime.datetime.now(pytz.timezone('US/Pacific'))
>>> pacific_now.utcoffset().total_seconds()/60/60
-7.0
148
由于夏令时(DST)的影响,结果会根据一年中的时间而有所不同:
import datetime, pytz
datetime.datetime.now(pytz.timezone('Asia/Jerusalem')).strftime('%z')
# returns '+0300' (because 'now' they have DST)
pytz.timezone('Asia/Jerusalem').localize(datetime.datetime(2011,1,1)).strftime('%z')
# returns '+0200' (because in January they didn't have DST)