首页 > 解决方案 > 如何解释 pytz.timezone 的内容

问题描述

我最近在我的代码中有一个错误,因为我使用EST时区认为它是US/Eastern.

根据我现在的理解,ESTEastern Standard Time,并且它不会随 DST 移动。的类似物ESTEDT( Eastern Daylight Time)。两者都不会与 DST 一起移动。时区是US/Eastern.

因此,我想找出关于CET( Central European Time) 的相同信息。

我打印了__dict__几个时区,但我不确定如何正确解释内容。

>>> import pytz
>>> import pp

>>> pp(pytz.timezone('CET').__dict__)
{
    '_dst': datetime.timedelta(0),
    '_tzinfos': {
        (datetime.timedelta(0, 3600), datetime.timedelta(0), 'CET'): <DstTzInfo 'CET' CET+1:00:00 STD>,
        (datetime.timedelta(0, 7200), datetime.timedelta(0, 3600), 'CEST'): <DstTzInfo 'CET' CEST+2:00:00 DST>,
    },
    '_tzname': 'CET',
    '_utcoffset': datetime.timedelta(0, 3600),
}

>>> pp(pytz.timezone('Europe/Berlin').__dict__)
{
    '_dst': datetime.timedelta(0),
    '_tzinfos': {
        (datetime.timedelta(0, 3180), datetime.timedelta(0), 'LMT'): <DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>,
        (datetime.timedelta(0, 3600), datetime.timedelta(0), 'CET'): <DstTzInfo 'Europe/Berlin' CET+1:00:00 STD>,
        (datetime.timedelta(0, 7200), datetime.timedelta(0, 3600), 'CEST'): <DstTzInfo 'Europe/Berlin' CEST+2:00:00 DST>,
        (datetime.timedelta(0, 10800), datetime.timedelta(0, 7200), 'CEMT'): <DstTzInfo 'Europe/Berlin' CEMT+3:00:00 DST>,
    },
    '_tzname': 'LMT',
    '_utcoffset': datetime.timedelta(0, 3180),
}

我对ESTand做了同样的事情,其中​​没有任何令人困惑的东西,US/Eastern而有5EST__dict__US/Eastern

>>> pp(pytz.timezone('EST').__dict__)
{}

>>> pp(pytz.timezone('US/Eastern').__dict__)
{
    '_dst': datetime.timedelta(0),
    '_tzinfos': {
        (datetime.timedelta(-1, 68400), datetime.timedelta(0), 'EST'): <DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>,
        (datetime.timedelta(-1, 68640), datetime.timedelta(0), 'LMT'): <DstTzInfo 'US/Eastern' LMT-1 day, 19:04:00 STD>,
        (datetime.timedelta(-1, 72000), datetime.timedelta(0, 3600), 'EDT'): <DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>,
        (datetime.timedelta(-1, 72000), datetime.timedelta(0, 3600), 'EPT'): <DstTzInfo 'US/Eastern' EPT-1 day, 20:00:00 DST>,
        (datetime.timedelta(-1, 72000), datetime.timedelta(0, 3600), 'EWT'): <DstTzInfo 'US/Eastern' EWT-1 day, 20:00:00 DST>,
    },
    '_tzname': 'LMT',
    '_utcoffset': datetime.timedelta(-1, 68640),
}

最后,有没有办法获得人类可读的时区“做什么”描述,例如它是否更改为 DST,与 UTC 的偏移量是多少等?

标签: pythonpytz

解决方案


推荐阅读