将 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
如果不这样做,时区对象将处于无效状态,因为它没有机会针对日期进行调整。
当我将无意识 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
如果不这样做,时区对象将处于无效状态,因为它没有机会针对日期进行调整。