Для клиента я храню журналы событий в базе данных postgres. Каждое событие имеет дату, которая хранится как метка времени с часовым поясом в postgres. Дата автоматически заполняется с использованием встроенного атрибута Djangos auto_now_add
в определении модели.
В settings.py я установил следующее:
TIME_ZONE = 'UTC'
USE_TZ = True
DATETIME_FORMAT = 'd/m/o H:i:s'
DATE_FORMAT = 'd/m/o'
TIME_FORMAT = 'H:i:s'
SHORT_DATE_FORMAT = 'd/m/o'
SHORT_DATETIME_FORMAT = 'd/m/o H:i'
У меня большой опыт работы с этим механизмом, и до сих пор он никогда не вызывал проблем. Клиент на самом деле указал, что было несколько записей с датой, лежащей в будущем (невозможно для журнала событий).
После проверки внешнего интерфейса, а также администратора я могу убедиться, что появляются недопустимые даты, например (30/12/2020 и 31/12/2020) (все недопустимые даты находятся в этом диапазоне, другие даты до и после отображаются правильно). Когда я проверяю базу данных (Postgres), я могу убедиться, что сохраненные даты на самом деле оба в 2019 году и имеют следующие значения меток времени: 2019-12-30 10:23:07.451674+00
и 2019-12-31 08:12:26.635693+00
.
Используемый шаблон во внешнем интерфейсе {{ log_item.date }}
для отображения даты.
Что мне не хватает? Любые советы приветствуются.