Преобразование временной метки в правильное время в местном часовом поясе - Django

Я получаю метку времени из API. Когда я преобразовываю ее с помощью:

timestamp = datetime.fromtimestamp(json.loads(m)["_timestamp"], tz=pytz.timezone('Europe/Berlin')) 

Я получаю правильное время в консоли, когда я печатаю его:

2021-11-10 15:22:26+01:00

Но когда я сохраняю его в базе данных с:

BedTemperatureHistory.objects.create(TimeStamp=timestamp)

Временная метка в базе данных выглядит примерно так (на один час меньше):

2021-11-10 14:22:26.000000 +00:00 

Мои настройки часового пояса выглядят следующим образом:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Europe/Berlin'

USE_I18N = True

USE_L10N = True

USE_TZ = False

Кто-нибудь знает, что мне нужно сделать, чтобы сохранить правильную временную метку в моей базе данных?

Вам необходимо включить поддержку часовых поясов в настройках.

USE_TZ = True

EDIT: В вашем вопросе временная метка действительно сохранена правильно. Вы заметите, что два времени фактически одинаковы, 15:22+01:00 - это то же самое, что 14:22+00:00. Django хранит время даты в UTC, чтобы избежать проблем с переходом на летнее время:

Django хранит информацию о времени в UTC в базе данных, использует объекты времени с учетом временной зоны внутри, и переводит их в часовой пояс конечного пользователя в шаблонах и формах.

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