例子
import pytz
b=pytz.timezone('Europe/Rome')
c=pytz.timezone('Europe/Berlin')
虽然这两个时区名称不同,但代表的是同一件事
- b==c 返回 false
- b.zone 与 c.zone 不同
有没有办法看出 b 实际上等于 c?
具体问题是我必须转换 pandas 数据帧的时区,但前提是这个时区不同于 c。原始时区可能是 b,在这种情况下我不想转换,因为将 b 转换为 c 会浪费时间(因为它们最后代表相同的时区....)
感谢您的帮助。
更新: 将“CET”更改为“欧洲/罗马”以确保示例中的时区相同,使用答案的反馈
最佳答案
它们不代表同一事物。
"CET"
总是 UTC+01:00"Europe/Berlin"
在冬季的 CET (UTC+01:00) 和夏季的 CEST (UTC+02:00) 之间交替。
另见:
- The timezone tag wiki - 具体来说,“时区!=偏移量”部分
- The dst tag wiki - 包括夏令时。
关于编辑,Europe/Rome
是一个不同的时区。它与 Europe/Berlin
不同, 也不 Europe/Zurich
, 也不 Europe/Amsterdam
.至少不是他们的整个历史。
如果您比较它们的定义(使用前一段中的链接),您会发现它们在过去的某个时刻都与 CET/CEST 的“欧盟”规则一致。罗马和柏林自 1980 年以来,苏黎世自 1981 年以来,阿姆斯特丹自 1977 年以来。在这些日期之前,它们存在显着差异。其他时区也有不同的规则。
如果您对这些区域的历史感兴趣,我建议您阅读 europe file在 TZ 数据中。光是评论就很有趣。
另一方面,如果您只使用现代日期,其中所有区域都遵循相同的规则和偏移量,那么您可以考虑这些可替代的 - 至少只要它们在未来不会改变。
另外, 一些时区只是别名,完全可以互换。在 TZ 数据中,它们被称为“链接”。例如,您可以看到 here Europe/Vatican
和 Europe/San_Marino
都链接到 Europe/Rome
,因此是等价的。
关于python - 如何比较python中的两个时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265998/