Python 中时区转换的不可预测行为

问题描述 投票:0回答:1

我在 Python 中将时间从 UTC 转换为 MSK 时遇到问题。我注意到,当我在日期时间中设置莫斯科时区时,我得到了错误的结果 - 偏移了 +2:30 小时。

下面是我正在运行的代码(Python 3.11.5):

from datetime import datetime

datetime(2023, 11, 8, 22, 11, 7, 0,  pytz.timezone('Europe/Moscow'))

结果是:

datetime.datetime(2023, 11, 8, 22, 11, 7, tzinfo=<DstTzInfo 'Europe/Moscow' LMT+2:30:00 STD>)

但是 Google 说 3:00 小时偏移是正确的

我的问题是:

  1. 为什么我在 Python 中得到错误的偏移量?
  2. 我应该使用什么方法或设置来确保准确处理时间偏移并避免潜在的错误?
python utc python-datetime timezone-offset
1个回答
0
投票

这不是 pytz 的正确用法,不要将 tzinfo 直接附加到 datetime init。

相反:

>>> tz = pytz.timezone('Europe/Moscow')
>>> tz.localize(datetime(2023, 11, 8, 22, 11, 7, 0))
datetime.datetime(2023, 11, 8, 22, 11, 7, tzinfo=<DstTzInfo 'Europe/Moscow' MSK+3:00:00 STD>)
© www.soinside.com 2019 - 2024. All rights reserved.