Django 1.9 / Postgres 9.4 - 我有一个名为date_ending
的模型日期时间字段。当我使用my_item.date_ending
获取日期时间时,它给出的日期和时间与我直接访问数据库时看到的日期和时间不同。我设置了settings.py:
TIME_ZONE = 'UTC'
USE_I18N = False
USE_L10N = False
USE_TZ = False
这应该让django摆脱不断变化的时区,对吗?基本上我希望Django根本不接触时区。此外,这可能是完全不同的东西......
当我保存带有日期时间字段和日期字段的模型时。日期与日期时间不同。
datetime_ = datetime.datetime.utcnow()
datetime_date_ = datetime_.date()
MyModel.objects.create(
datetimefield=datetime_,
datefield=datetime_date_,
).save()
我的数据库:
datetimefield | datefield
-------------------------------+-----------------
2016-11-04 18:23:18.407671-07 | 2016-11-05
????
请帮忙。感谢
答案 0 :(得分:0)
在我看来,你的postgres数据库被配置为UTC-07中的时区,因此它将日期时间存储在该时区中,并且当它"减去"将日期时间存储到该时区需要7个小时,最终会延迟一天。如果您将该日期时间更改为UTC(+00)日期时间,那就是2016-11-05 01:23:18.407671+00
或类似的内容,并且它与日期字段相对应。
如果我没弄错,当您使用django的ORM检索此datetimefield
,而不是直接在postgre的控制台上检索时,它应该转换回UTC,因为它是Django配置使用的是什么。