Man*_*gia 6 python timezone pandas
例
import pytz
b=pytz.timezone('Europe/Rome')
c=pytz.timezone('Europe/Berlin')
Run Code Online (Sandbox Code Playgroud)
然而,这两个时区有不同的名称,但代表相同的东西
有没有办法看到b实际上等于c?
具体的问题是我必须转换pandas数据帧的时区,但只有当这个区域不同于让我们说c时.原始时区可能是b,在这种情况下我不想转换,因为将b转换为c会丢失时间(因为它们代表最后的相同时区....)
谢谢你的帮助.
更新:将'CET'更改为'Europe/Rome'以确保示例中的时区相同,使用答案的反馈
他们并不代表同样的事情。
"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 年以来的阿姆斯特丹。在这些日期之前,它们有很大的不同。其他时区也有不同的规则。
如果您对这些区域的历史感兴趣,我建议您通读TZ 数据中的欧洲文件。光是评论就很有意思。
另一方面,如果您只使用现代日期,其中所有区域都遵循相同的规则和偏移量,那么您可以考虑这些可替代的——至少只要它们在未来不会改变。
此外,还有是一些时区中只是别名,是完全可以互换的。在 TZ 数据中,它们被称为“链接”。例如,您可以在此处看到Europe/Vatican和Europe/San_Marino都链接到Europe/Rome,因此是等效的。
这是一种贫民窟,但我可以将两个时区的偏移量与给定的时间戳进行比较。
from datetime import datetime
today = datetime.today()
b.utcoffset(today) == c.utcoffset(today)
Run Code Online (Sandbox Code Playgroud)