Django的时区问题

时间:2016-09-06 00:14:29

标签: django postgresql mezzanine

我首先将TIME_ZONE设置为UTC。但现在我想删除它,并为我的用户提供不同的时区。当重新启动gunicorn和nginx时,它仍然是相同的。这些帖子比它应该晚2个小时。

这就是我在DB中所得到的:

         publish_date          
-------------------------------
 2016-09-21 09:08:40+00
 2016-09-08 09:36:35+00
 2016-09-07 09:08:42+00
 2016-09-06 07:16:22+00
 2016-09-06 01:50:58+00
 2016-09-05 22:55:07+00
 2016-09-05 16:22:37+00
 2016-09-05 16:18:36.52146+00
 2016-09-05 12:22:09.292926+00
 2016-09-05 09:09:05+00
 2016-09-04 19:00:12+00
 2016-09-04 18:20:07.83214+00
 2016-09-04 11:01:58+00
 2016-09-04 10:02:29+00
 2016-09-04 08:37:43.421796+00
 2016-09-03 20:36:49+00
 2016-09-03 13:42:06+00
 2016-09-02 18:51:19+00
 2016-09-02 18:36:16+00
 2016-09-02 12:08:50+00
 2016-09-02 10:33:28+00
 2016-09-02 08:20:30+00
 2016-09-02 08:18:36+00
 2016-09-02 08:01:49.359479+00
 2016-09-01 18:54:01.18064+00
 2016-09-01 18:54:01.163647+00
 2016-09-01 18:54:01.145824+00
 2016-09-01 18:54:01.128807+00
 2016-09-01 18:54:01.109296+00
 2016-09-01 18:54:01.091886+00
 2016-09-01 18:54:01.076142+00
 2016-09-01 18:54:01.041784+00
 2016-09-01 18:54:01.025924+00
 2016-09-01 18:54:01.009529+00
 2016-09-01 18:54:01+00
 2016-09-01 18:54:00.988107+00
 2016-09-01 18:54:00.971702+00
 2016-09-01 16:58:54+00
 2016-09-01 13:43:34+00
 2016-09-01 13:38:35+00
 2016-09-01 09:21:33+00
 2016-09-01 09:17:41+00
 2016-09-01 06:27:31+00
 2016-08-31 22:41:13+00
 2016-08-31 19:23:59.930632+00
 2016-08-31 19:23:59.914006+00
 2016-08-31 19:23:59.898492+00
 2016-08-31 19:23:59.880307+00
 2016-08-31 19:23:59.862554+00
 2016-08-31 19:23:59.846515+00
(50 rows)

它显示+00,我认为是UTC。但应该是GMT / UTC + 2:00。

检查postgresql(show timezone;)时:

TimeZone 
----------
 UTC
(1 row)

我该怎么办?为什么会这样?

1 个答案:

答案 0 :(得分:0)

UTC它很好。您应该将时区存储为UTC,然后根据用户的时区/应用设置时区进行转换。

如果在数据库中存储不同的时区,可能会很麻烦。

设置USE_TZ = True时。 Django将日期的时区存储为数据库中的UTC。然后,根据您在Django中的时区设置,它将自动从存储的UTC日期转换日期。

如果设置USE_TZ = False。 Django将日期存储为天真的表示。