【发布时间】:2022-01-26 07:10:44
【问题描述】:
以下代码在 MacOS 和 Ubuntu(AWS Ubuntu 2.0 EC2 实例)上运行时会产生不同的结果
import datetime
import pytz
dt = datetime.datetime(year=2020, month=12, day=3, hour=8, minute=30)
dt_aware = dt.astimezone(pytz.timezone('Europe/Paris'))
print(dt_aware)
在 MacOS BigSur 11.6 上,它返回:2020-12-03 00:30:00+01:00
在 Ubuntu 2.0 上,它返回:2020-12-03 09:30:00+01:00。
在这两种情况下:
- 使用 Python 3.8
- 使用pytz 2020.4版本
结果不同的原因是什么?
编辑:我想将“2020/12/03 08:30”表示为巴黎的日期时间。所以我希望两者都返回2020-12-03 08:30:00+01:00
【问题讨论】:
-
可能是因为您/您的 Mac 生活在不同的时区。你想达到什么目的?您要表示的实际时间戳是什么,巴黎的 8:30,或者您 tz 中的 8:30 在巴黎的时间?
-
我想代表巴黎8:30。
-
那么您需要在创建日期时间时了解时区,而不仅仅是事后更改 tz。
-
你说得对,我应该做的是:
dt_aware = pytz.timezone('Europe/Paris').localize(dt)
标签: python-3.x macos ubuntu python-datetime pytz