我完全困惑地试图保存用户输入的日期时间。它可以节省,但进行了某种时区转换。我已经尝试设置use_tz = true and time_zone ='utc',但是出于某种奇怪的原因,django保存了我的日期时间,但它从小时中分包了7。例如,如果我以" 2014-01-29 16:56:00"的速度输入DateTime,当我查看数据库时,我会看到'2014-01-29 09:56:00-07'。我已经阅读了时区文档,但是我对为什么会发生这种情况感到非常困惑。任何帮助将不胜感激!
看来,这不是Django的特别问题,而是Postgres的更多问题。由于Django告诉Postgres创建一个"带时区的时间戳",Postgres正确存储时间戳,并为直接从Postgres查询数据时设置一个偏移量,它将在使用偏移量的情况下向您显示时间戳。但是,当数据返回Django时,除非您提供偏移,否则将删除偏移量。似乎令人困惑,不确定为什么这样做。对于我的特定用例,我选择编写一个自定义字段来创建"没有时区的时间戳"。Django只能创建"随时间段的时间戳",因此解决此问题的唯一方法是:
-
用SQL更改表。如果使用South,则可能不是部署到多个环境时的最佳选择。
-
创建一个自定义字段,该字段创建"没有时区的时间戳"。这是我决定走的路线。希望这是正确的路线。
感谢所有试图帮助我解决这个问题的人。
django docs指出默认时区设置为:
TIME_ZONE = 'America/Chicago'
这是链接:
https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
设置TIME_ZONE
时,他们还陈述了几个选项。一种选项是按名称手动设置它,这是django doc中列表的 TIME_ZONE
名称的链接:
http://en.wikipedia.org/wiki/list_of_tz_database_time_time_zones