我完全难过试图保存用户输入的日期时间。它可以节省,但会进行某种时区转换。我尝试过设置USE_TZ = True和TIME_ZONE ='UTC',但由于一些奇怪的原因,Django会保存我的日期时间,但它会从小时减去7。例如,如果我输入日期时间为'2014-01-29 16:56:00',当我查看数据库时,我会看到'2014-01-29 09:56:00-07'。我已经阅读了时区文档,但我完全不知道为什么会发生这种情况。任何帮助将不胜感激!
答案 0 :(得分:1)
看起来这并不是Django的具体问题,而是Postgres的一个问题。由于Django告诉Postgres创建一个“带时区的时间戳”,Postgres会正确存储时间戳,并设置一个偏移量,当你直接从Postgres查询数据时,它会显示应用了偏移量的时间戳。但是当数据返回Django时,除非您提供了偏移量,否则将删除偏移量。似乎令人困惑,不知道为什么这样做。对于我的特定用例,我选择编写自定义字段来创建“没有时区的时间戳”。 Django只创建“带时区的时间戳”,所以解决这个问题的唯一方法就是:
使用SQL更改表。如果使用South,则部署到多个环境时可能不是最佳选择。
创建一个自定义字段,用于创建“无时区的时间戳”。这是我决定去的路线。希望这是正确的路线。
感谢所有试图帮助我解决这个问题的人。
答案 1 :(得分:0)
Django文档声明默认时区设置为:
TIME_ZONE = 'America/Chicago'
这是链接:
https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
在设置TIME_ZONE
时,他们还说明了几个选项。一个选项是按名称手动设置它,这里是Django Doc的TIME_ZONE
名称列表的链接: