Django没有在db中存储确切的UTC时间
Posted
技术标签:
【中文标题】Django没有在db中存储确切的UTC时间【英文标题】:Django not storing the exact UTC time in db 【发布时间】:2018-01-25 01:47:03 【问题描述】:我有一个 Django API/PostgreSql 项目,我尝试以 UTC 格式存储日期时间,稍后我将在前端使用 angular 转换为正确的时区。
我目前的设置是:
USE_TZ = True
TIME_ZONE = 'US/Eastern'
我第一次使用 UTC,但由于某种原因,日期时间存储为 +1 小时,所以我将时区设置为我的服务器时区
型号:
date = models.DateTimeField(default = timezone.now())
但是当我检索插入的记录时,时间还是晚了-3分钟。
当我使用下面的代码时,它会存储正确的时间:
date = models.DateTimeField(auto_now_add=True)
我在配置中遗漏了什么吗?我应该在哪个 TIME_ZONE 使用,服务器位置 time_zone,或者它与服务器时间有关 设置?
【问题讨论】:
你的服务器的时间是否减少了 3 分钟?date = models.DateTimeField(default = timezone.now())
default=timezone.now(注意缺少括号)。
Django datetime issues (default=datetime.now())的可能重复
【参考方案1】:
问题已解决,我不知道为什么,但是当我使用时:
date = models.DateTimeField(default = timezone.now()) # note: .now() with parenthesizes
时间卡住了,在服务器启动的时候。
修复使用:
date = models.DateTimeField(default = timezone.now) # without ()
我在 Django 1.6.5
【讨论】:
您的答案在参考文献中重复 ;-)。以上是关于Django没有在db中存储确切的UTC时间的主要内容,如果未能解决你的问题,请参考以下文章
查询 Django 模型时,如何将 Django 中的 DateTimeField 从 UTC 转换为最终用户的时区(通常是 PST)?
如何在 python 和 django 中使用 Pytz 根据给定的 UTC 偏移量转换数据和时间?
如何确保保存在数据库中的UTC日期等于Django中指定时区的午夜[重复]