如何使用 dateutil.tz 让天真的日期时间感知?

How to make a naive datetime aware with dateutil.tz?

目前,如果我想将天真的 datetime 转换为有意识的,我会按如下方式进行:

from datetime import datetime
import pytz

pytz_tz = pytz.timezone('Europe/London')

naive_datetime = datetime(2020, 1, 5, 10, 12)
aware_datetime = pytz_tz.localize(naive_datetime)

如果我使用 dateutil 作为我的时区,就像这样:

from dateutil import tz

dateutil_tz = tz.gettz('Europe/London')

我现在如何使用 dateutil_tz 从幼稚到有意识的转变?

我看到了 post,但不明白它是如何完成的。

由于 dateutil 使用与 datetime 库相同的时区模型,您可以直接设置 tzinfo 属性。您也可以安全地使用 .replace(tzinfo=...)

import dateutil
aware_datetime = datetime(2020, 1, 5, 10, 12, tzinfo=dateutil.tz.gettz('Europe/London'))

print(aware_datetime)
# 2020-01-05 10:12:00+00:00

顺便说一下,如果您在 Python 3.9 上使用 zoneinfo 模块,过程是相同的:

from zoneinfo import ZoneInfo
aware_datetime = datetime(2020, 1, 5, 10, 12, tzinfo=ZoneInfo('Europe/London'))