将 tz naive datetime 转换为 tz aware 从 0 分钟跳到 58

Converting tz naive datetime to tz aware jumps from 0 minutes to 58

当我将无意识 datetime 转变为有意识时,它做了一件奇怪的事情。它增加了 58 分钟。

_datetime = datetime.combine(_date,_time)
print(_datetime)
datetime_tz = _datetime.replace(tzinfo='Europe/Bratislava')
print(_datetime_tz)

2020-02-02 12:45:00
2020-02-02 12:45:00+00:58

你知道为什么以及如何让它发挥作用吗?

要正确使用来自 pytz 的时区对象,您必须使用 localize 函数。

>>> import pytz
>>> tz = pytz.timezone('Europe/Bratislava')
>>> _datetime = datetime.combine(_date,_time)
>>> print(_datetime)
2020-02-02 12:45:00
>>> _datetime_tz = tz.localize(_datetime)
>>> print(_datetime_tz)
2020-02-02 12:45:00+01:00

如果不这样做,时区对象将处于无效状态,因为它没有机会针对日期进行调整。