python - 如何比较python中的两个时区?

标签 python pandas timezone

例子

 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) 之间交替。

另见:

关于编辑,Europe/Rome是一个不同的时区。它与 Europe/Berlin 不同, 也不 Europe/Zurich , 也不 Europe/Amsterdam .至少不是他们的整个历史。

如果您比较它们的定义(使用前一段中的链接),您会发现它们在过去的某个时刻都与 CET/CEST 的“欧盟”规则一致。罗马和柏林自 1980 年以来,苏黎世自 1981 年以来,阿姆斯特丹自 1977 年以来。在这些日期之前,它们存在显着差异。其他时区也有不同的规则。

如果您对这些区域的历史感兴趣,我建议您阅读 europe file在 TZ 数据中。光是评论就很有趣。

另一方面,如果您只使用现代日期,其中所有区域都遵循相同的规则和偏移量,那么您可以考虑这些可替代的 - 至少只要它们在未来不会改变。

另外, 一些时区只是别名,完全可以互换。在 TZ 数据中,它们被称为“链接”。例如,您可以看到 here Europe/VaticanEurope/San_Marino 都链接到 Europe/Rome,因此是等价的。

关于python - 如何比较python中的两个时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265998/

相关文章:

Python Pandas - 读取包含多个表的 csv 文件

java - Grails 中的时区转换导致错误的日期

docker - 如何在Docker中分配时区

python - (如何)您可以使用 fit. 在 sklearn 中训练模型两次(多次)?

python - Django 地理信息系统 : Using location__dwithin gives "Only numeric values of degree units are allowed" however location__distance_lte works fine

python - 当这些列的名称与列表中的名称匹配时,如何跨 pandas 列添加所有值?

python - pandas df.apply TypeError 数据类型不理解

c++ - 通过 boost 获取自本地时间上午 8 点以来耗时

python - 将 CSV 文件中的列转换为 Python 中的单词直方图

python - 有什么方法可以从两个数据帧创建一个新的数据帧,其中一个 df 的每一行都必须重复?