【问题标题】:How to get datetime without Django modifying time?如何在没有 Django 修改时间的情况下获取日期时间?
【发布时间】:2016-10-25 19:37:27
【问题描述】:

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

??????

请帮忙。谢谢

【问题讨论】:

    标签: python django postgresql


    【解决方案1】:

    在我看来,您的 postgres 数据库配置为 UTC-07 中的时区,因此它将日期时间存储在该时区中,并且当它“减去”7 小时以将日期时间存储到该时区时,它最后一天回去。如果您将该日期时间更改为 UTC (+00) 日期时间,那就是 2016-11-05 01:23:18.407671+00 或类似的东西,它会与日期字段相对应。

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

    【讨论】:

    • 非常感谢。 PostgreSQL 9.4 设置为我在 AZ/US 的专用服务器时间。我去了我的数据库并输入...show timezone;...查看它是 AZ/US,然后通过设置更改为 UTC...set timezone='UTC';
    • @quaerereveritatem :)
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多