如何使用 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'))
目前,如果我想将天真的 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
从幼稚到有意识的转变?
我看到了
由于 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'))