对于客户端,我将事件日志存储在 postgres 数据库中。每个事件都有一个日期,该日期在 postgres 中存储为带有时区的时间戳。该日期是使用模型定义中 Django 内置的 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'
我对这个机制有很多经验,直到现在它还没有引起过问题。客户实际上指出有许多条目的日期是 future 的(对于事件日志来说是不可能的)。
检查前端和管理员后,我可以验证是否存在无效日期,例如(2020年12月30日和2020年12月31日)出现(所有无效日期都在此范围内,之前和之前的其他日期之后正确显示)。当我检查数据库(Postgres)时,我可以验证存储的日期实际上都是 2019 年,具有以下时间戳值:2019-12-30 10:23:07.451674+00
和 2019 -12-31 08:12:26.635693+00
。
前端使用的模板使用 {{ log_item.date }}
来显示日期。
我错过了什么?任何提示表示赞赏。
最佳答案
使用 DATE_FORMAT = 'd/m/Y'
而不是 DATE_FORMAT = 'd/m/o'
。当您使用 o
格式表示年份时,它会返回按周编号的年份。由于12月30日至31日是2020年的第一周,所以它给你2020年。
关于python - Django DATETIME_FORMAT 特定日期不正确(一年),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59987172/