如何解决将datetime.datetime从UTC转换为CEST一小时以内
如果我运行以下代码,我会将datetime.datetime从utc转换为cest,但是它不能正常工作。正确的是,因为时差为2小时,它将从21:29更改为23:29
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('CEST')
created_at
Out[302]: datetime.datetime(2020,1,30,21,29,34)
utc.replace(tzinfo=from_zone)
Out[303]: datetime.datetime(2020,34,tzinfo=tzwin('UTC'))
utc.astimezone(to_zone)
Out[304]: datetime.datetime(2020,22,tzinfo=datetime.timezone(datetime.timedelta(seconds=3600),'Mitteleuropäische Zeit'))
解决方法
要进行正确的本地化,请提供IANA time zone name,例如
to_zone = tz.gettz('Europe/Berlin')
在提起@GiacomoCatenazzi的评论时,请注意,IANA时区(此处:欧洲/柏林)与某个地理区域相关,而相关的“缩写”(此处:CET / CEST)与在特定时间段内从UTC产生的偏移有关。年。多个地理时区 可以与UTC共享相同的偏移量,例如欧洲/柏林和欧洲/巴黎甚至在CET和CEST simultaneously in 2020之间发生变化。
但是: 相反,这是1)模棱两可或2)甚至无效:
- 多个地理区域可以具有CEST UTC偏移量 在某些时间
- 例如,2020年1月1日没有CEST(尽管世界上其他国家/地区当时可能会使用UTC + 2 ...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。