为什么在 MacOS 和 Ubuntu 上运行程序时时区感知日期时间不同?



以下代码在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 小时。

最新更新