以下代码在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
解释结果不同的原因是什么?
>EDIT:我想将"2020/12/03 08:30"表示为巴黎的日期时间。所以我都回来了2020-12-03 08:30:00+01:00
这可能是因为 AWS 实例与您的 MacOS 计算机不在同一时区。当您创建没有指定时区的日期时间时,它将根据您的计算机/操作系统使用默认时区。
然后你把它调整到欧洲巴黎,它从默认时区更改为那个时区。
因此,AWS 实例可能采用 UTC,与巴黎仅相差 1,因此 8 变为 9。
您的MacOS可能在美国(太平洋?)的某个地方,距离UTC相差8小时,距离巴黎相差9小时。因此,当设置为巴黎时,最终会相差 9 小时。