问题描述
我有一个要求,我需要根据标准的UTC偏移量(不带DST)对几个时区代码进行分组-例如,所有标准UTC偏移值在4到6之间的时区都将属于一组,所以一个
我尝试了下面的方法,但是它给了我DST的偏移量。
pytz.timezone('Asia/Jerusalem').localize(datetime.datetime(2011,1,1)).strftime('%z')
解决方法
您可以使用.dst()
方法;它为您提供DST的时间增量。如果从.utcoffset()
中减去,您将获得时区的“标准” UTC偏移量。
from datetime import datetime
from zoneinfo import ZoneInfo
dt_woDST = datetime(2011,1,tzinfo=ZoneInfo('Asia/Jerusalem'))
# 2011-01-01 00:00:00+02:00
dt_DST = datetime(2011,6,tzinfo=ZoneInfo('Asia/Jerusalem'))
# 2011-06-01 00:00:00+03:00
utcoff0 = (dt_woDST.utcoffset()-dt_woDST.dst()).total_seconds()
utcoff1 = (dt_DST.utcoffset()-dt_DST.dst()).total_seconds()
print(utcoff0,utcoff0 == utcoff1)
# 7200.0 True
注意:我在这里使用Python 3.9的zoneinfo
;当然,这也适用于您使用pytz
时区对象本地化的日期时间对象。