如何解决Python中给定TimeZone的标准UTC偏移量无DST
我有一个要求,我需要根据标准的UTC偏移量(不带DST)对几个时区代码进行分组-例如,所有标准UTC偏移值在4到6之间的时区都将属于一组,所以一个
如何使用时区代码获取时区的标准UTC偏移量?
我尝试了下面的方法,但是它给了我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
时区对象本地化的日期时间对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。