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

Why timezone-aware datetime is different when running program on MacOS and on 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 上,returns:2020-12-03 00:30:00+01:00
在 Ubuntu 2.0 上,它 returns: 2020-12-03 09:30:00+01:00.

在这两种情况下:

结果不同的原因是什么?


编辑:我想将“2020/12/03 08:30”表示为巴黎的日期时间。所以我希望两者都返回 2020-12-03 08:30:00+01:00

这可能是因为 AWS 实例与您的 MacOS 机器不在同一时区。当您创建没有指定时区的 dateTime 时,它​​将使用基于您的 machine/OS.

的默认时区

然后您将其调整为 Europe Paris,它会从默认时区更改为该时区。

所以 AWS 实例可能是 UTC 并且与 Paris 仅相差一个,所以 8 变成了 9。

您的 MacOS 可能位于美国(太平洋地区?)的某个地方,与 UTC 相差 8 小时,与巴黎相差 9 小时。因此,当设置为巴黎时,最终总时差为 9 小时。