【问题标题】:Postgres datetime field fetched without timezone in django在 django 中获取没有时区的 Postgres 日期时间字段
【发布时间】:2013-10-04 04:58:32
【问题描述】:

datetime 使用 UTC 存储在 postgres DB 中。我可以看到 postgres 表中的日期是 2013-09-28 00:15:52.62504+05:30。

但是当我通过 django 模型获取值时,我得到的日期时间字段与 datetime.datetime(2013, 9, 27, 18, 45, 52, 625040, tzinfo=) 相同。

在 settings.py 文件中,USE_TZ 为 True,TIME_ZONE 为“亚洲/加尔各答”。我认为保存到 DB 工作正常,因为 DB 包含正确 UTC 为 +5:30 的日期时间。

我在这里做错了什么?

请帮忙。

谢谢 库马尔

【问题讨论】:

  • 我不太明白这个问题。 2013-09-27 18:45 +05:30 确实是 2013-09-28 00:15。
  • Postgres 不理解Indian Standard Time。你需要做一些自定义设置。 stackoverflow.com/questions/9815412/…
  • Postgres 中的字段是什么数据类型?
  • @Hyperboreus,是的,表中的值是正确的,但是当我通过 django 模型获取值时,它会转换为 UCT+0:00,从而将模型字段的值作为 datetime.datetime(2013 , 9, 27, 18, 45, 52, 625040, tzinfo=)。我不确定为什么在 django 设置中完成此转换我已正确设置时区。
  • @karthikr,我认为 posgtres 已经使用时区存储了正确的值,但是 django 模型将其转换回美国时区,我不明白为什么。

标签: python django postgresql timezone


【解决方案1】:

问题已解决。问题是我使用另一个天真的日期时间字段来计算时间差,而数据库字段是一个感知字段。然后我将天真日期转换为时区感知日期,从而解决了问题。

以防万一有人需要知道。

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2018-03-21
    • 2022-08-22
    • 1970-01-01
    相关资源
    最近更新 更多