gpt4 book ai didi

python - pytz 时区的 STD 偏移量

转载 作者:行者123 更新时间:2023-11-30 23:34:27 28 4
gpt4 key购买 nike

我想将 UTC 偏移量添加到时区列表中 tz database , 喜欢:* (UTC +0) 欧洲/伦敦

有关我使用的时区列表 pytz .common_timezones,但无法检索时区的 STD utcoffset,因为时区对象上的所有方法都需要 dt 对象、时间时刻、何时计算偏移量。

是否可以从 pytz 时区对象获取 STD 偏移量,而不需要对特定日期进行操作?

谢谢!

最佳答案

pytz tzinfo 对象包含 UTC 转换时间,它标记 STD 和 DST 之间的边界。然而,访问这些信息需要深入了解它们的私有(private)属性——特别是,tzone._utc_transition_timestzone._transition_info。因此,接下来的内容是脆弱的 - pytz 不保证您可以在未来版本中以相同的方式访问相同的信息。

尽管如此,至少对于 pytz 2010b 版本,使用上面的属性,您可以找到最近一段时间的 STD 日期。然后,您可以使用 std_date.strftime('%z') 打印偏移量。

import pytz
import datetime as DT

NOW = DT.datetime.now()
ZERO = DT.timedelta(0)

for tname in pytz.common_timezones:
tzone = pytz.timezone(tname)
std_date = None
try:
for utcdate, info in zip(
tzone._utc_transition_times, tzone._transition_info):
utcoffset, dstoffset, tzname = info
if dstoffset == ZERO:
std_date = utcdate
if utcdate > NOW:
break
except AttributeError:
std_date = NOW
std_date = tzone.localize(std_date)
print('{n} UTC{z}'.format(n=tname, z=std_date.strftime('%z')))

打印

Africa/Abidjan UTC+0000
Africa/Accra UTC+0000
Africa/Addis_Ababa UTC+0235
Africa/Algiers UTC+0000
Africa/Asmara UTC+0235
Africa/Bamako UTC+0000
Africa/Bangui UTC+0114
Africa/Banjul UTC+0000
...

关于python - pytz 时区的 STD 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18131839/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com