从python中的时区名称获取UTC偏移量

时间:2011-04-04 11:34:14

标签: python

如何在python中从时区名称获取UTC偏移?

例如:我有Asia/Jerusalem,我想获得+0200

3 个答案:

答案 0 :(得分:82)

由于夏令时(夏令时),结果取决于一年中的时间:

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)

答案 1 :(得分:38)

您是否尝试过使用pytz项目和utcoffset method

e.g。

>>> import datetime
>>> import pytz
>>> pacific_now = datetime.datetime.now(pytz.timezone('US/Pacific'))
>>> pacific_now.utcoffset().total_seconds()/60/60
-7.0

答案 2 :(得分:2)

我在从python datetime对象转换为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 datetime对象转换为UTC。转换后,请以任何方式格式化。