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

标签 python django postgresql localization timezone

对于客户端,我将事件日志存储在 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+002019 -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/

相关文章:

python - 如何获取所有行的 QuerySet,每一行都有特定的字段?

spring - 来自 spring 应用程序的数据未保存在 dockerized Postgres 数据库中

macos - PostgreSQL 服务器不会在 Lion (Mac OS 10.7) 上关闭

postgresql 持久化数据 : which is better named volume or bind mount

python - 关于加载 npy 文件并调查其中的内容

python - .std() & .skew() 用 .rolling 给出错误答案

python - Django:有什么方法可以得到 "unique for date range"吗?

django.db.utils.OperationalError : (1054,“未知列

python - 在 Pandas 中创建 DateTimeIndex

python - 使用 python 将 DataFrame 列日期从 2/3/2007 格式转换为 20070223