如何解决Python中两个时区之间的转换
我正在尝试在 Python 中转换两个时区的时间,但我遇到了以下问题。
代码
import pytz
import datetime
chicago_timezone = pytz.timezone("America/Chicago")
polish_time_zone = pytz.timezone("Europe/Warsaw")
chicago_time = datetime.datetime(2020,6,25,8,chicago_timezone)
print(chicago_time)
polish_time = chicago_time.astimezone(polish_time_zone)
print(polish_time)
输出
2020-06-25 08:00:00-05:51
2020-06-25 15:51:00+02:00
而正确的抛光时间应该是 2020-06-25 15:00:00(7 小时时差)。 有人可以指导我吗?这让我有点困惑,我不明白为什么它没有按我预期的那样工作。
解决方法
您不能使用 pytz 以这种方式构建本地时间,因为时区在整个历史中都发生了变化。特定时区的特定偏移量取决于相关日期。构建像这样的时区感知日期时间不会正确地运行该逻辑,最终会得到不正确的偏移量。
出于这个原因,pytz 提供了 localize
。像这样使用它:
chicago_time = chicago_timezone.localize(datetime.datetime(2020,6,25,8,0))
,
首先最好使用zoneinfo;这里没有这样的问题:
import datetime
from zoneinfo import ZoneInfo # Python 3.9
chicago_timezone = ZoneInfo("America/Chicago")
polish_time_zone = ZoneInfo("Europe/Warsaw")
chicago_time = datetime.datetime(2020,chicago_timezone)
print(chicago_time)
polish_time = chicago_time.astimezone(polish_time_zone)
print(polish_time)
2020-06-25 08:00:00-05:00
2020-06-25 15:00:00+02:00
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。