我正在为一个客户在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。