如何在没有Django修改时间的情况下获取日期时间?

时间:2016-10-25 19:37:28

标签: python django postgresql

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

????

请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

在我看来,你的postgres数据库被配置为UTC-07中的时区,因此它将日期时间存储在该时区中,并且当它"减去"将日期时间存储到该时区需要7个小时,最终会延迟一天。如果您将该日期时间更改为UTC(+00)日期时间,那就是2016-11-05 01:23:18.407671+00或类似的内容,并且它与日期字段相对应。

如果我没弄错,当您使用django的ORM检索此datetimefield,而不是直接在postgre的控制台上检索时,它应该转换回UTC,因为它是Django配置使用的是什么。

相关问题