pytz时区的标准偏移量

2024-03-29 10:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从tz database向时区列表添加UTC偏移量,如: *(UTC+0)欧洲/伦敦

对于时区列表,我使用pytz.common\u时区,但无法检索时区的STD utcoffset,因为时区对象上的所有方法都需要dt object、time、when to calculate offset。在

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

谢谢!在


Tags: 对象方法列表objecttimedtcommondatabase
1条回答
网友
1楼 · 发布于 2024-03-29 10:48:56

pytztzinfo对象包含标记STD和DST之间边界的UTC转换时间。然而,访问这些信息尤其需要深入了解他们的私人属性, 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')))

印刷品

^{pr2}$

相关问题 更多 >