python - 如何解释 pytz.timezone 的内容
问题描述
我最近在我的代码中有一个错误,因为我使用EST
时区认为它是US/Eastern
.
根据我现在的理解,EST
是Eastern Standard Time
,并且它不会随 DST 移动。的类似物EST
是EDT
( 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),
}
- 为什么
Europe/Berlin
有4tzinfos
,而CET
只有 2 ? CET
有 2tzinfos
的事实是否DST
意味着它在 DST 生效时确实会移动?- 是什么
LMT
意思CEMT
?
我对EST
and做了同样的事情,其中没有任何令人困惑的东西,US/Eastern
而有5!EST
__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 的偏移量是多少等?
解决方案
推荐阅读
- javascript - 代理:使用代理对象时调用目标父级的静态方法
- tensorflow - protobuf 导致的 TensorFlow 检查点错误
- android-studio - 当我尝试在我的设备中安装 APK 文件时,它们显示错误
- c++ - c++ [CLion ide] 中未定义对“Class::function()”错误的引用
- javascript - 是否有只能检测直接子节点更改的 jquery 方法或其他解决方案?
- reactjs - 如何防止状态更新无限循环反应
- c - 动态选择要引用的#define
- reactjs - 如何使用 ReactJs 组件从 Laravel 添加数据?
- java - 用正则表达式屏蔽部分字符串
- java - java如何区分apache beam中KV实例中的两个键?