Как сделать наивное datetime осведомленным с помощью dateutil.tz? - PullRequest
0 голосов
/ 12 июля 2020

В настоящее время, если я хочу преобразовать наивный 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 из простого в осведомленный сейчас?

Я видел этот пост, но не понял, как это делается.

1 Ответ

1 голос
/ 15 июля 2020

, поскольку dateutil использует ту же модель часового пояса, что и datetime lib, вы можете сразу установить свойство 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

Кстати, процедура идентична, если вы используете модуль zoneinfo на Python 3.9:

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