Django DATETIME_FORMAT 特定日期不正确(一年)

Django DATETIME_FORMAT incorrect (by one year) for specific dates

对于客户端,我将事件日志存储在 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+002019-12-31 08:12:26.635693+00.

前端使用的模板使用{{ log_item.date }}显示日期。

我错过了什么?任何提示表示赞赏。

使用 DATE_FORMAT = 'd/m/Y' 而不是 DATE_FORMAT = 'd/m/o'。当您对年份使用 o 格式时,它是 return 周编号年份。由于 12 月 30 日和 31 日是 2020 年的第一周,它给你 2020 年。