Django + FactoryBoy -> Postgres некорректно конвертирует datetime в utc

Ладно, это странный вопрос. У меня есть модель Django, которую я записываю в Postgres через FactoryBoy для тестирования.

contract = ContractFactory(        
    effective_date=datetime.datetime(2023, 1, 1, tzinfo=pytz.timezone('US/Central'))
)

Я нахожусь в США/Центральной части США, и я ожидаю, что база данных будет хранить объект в UTC. Время даты в Postgres должно быть 2023-01-01 06:00:00 UTC, поскольку разница между часовыми поясами составляет 6 часов.

Если я получаю объект обратно и печатаю дату, она оказывается неверной!

2023-01-01 05:51:00+00:00

Если я получаю его из Postgres напрямую, это тоже неправильно:

2023-01-01 05:51:00.000000 +00:00

Я проверил необработанное время в базе данных, и оно правильное. Postgres запущен в контейнере Docker, и если я сделаю select now(), то время будет в точности соответствовать UTC.

Откуда это могло взяться?

Нашел ответ здесь: Неожиданные результаты преобразования часовых поясов в python

Использование функции datatime для создания времени не работает. Требуется создание времени даты и последующая локализация.

Вернуться на верх