在Python中根据时区名称获取UTC偏移量

109 投票
5 回答
88041 浏览
提问于 2025-04-16 15:02

我想知道怎么在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)

撰写回答