Django TimeStamp不一致

时间:2011-10-19 16:39:55

标签: django postgresql fullcalendar unix-timestamp

我正在为工作安排Web应用程序,我遇到了一个非常奇怪的问题。该应用程序使用Django和FullCalendar。在应用程序中,用户可以在FullCalendar中创建事件,并将开始和结束时间存储为PostgreSQL数据库中的DateTime字段。当事件返回到日历时,我使用Django DateTag将时间转换为UnixTimestamp。一切都很完美,除了时间戳将随机提前一小时返回所有事件。大约每隔几次我访问页面时,时间戳将关闭一小时。

是否有其他人遇到过类似的问题,并且能够找到解决办法?

2 个答案:

答案 0 :(得分:3)

可疑听起来像是时区问题,可能涉及夏令时 您知道这些types in PostgreSQL的差异吗?

timestamp
timestamp with time zone

注意区别:

db=# SELECT '2011-10-20 10:00+1'::timestamp;                                                                                                                                                                  timestamp
---------------------
 2011-10-20 10:00:00


db=# SELECT '2011-10-20 10:00+1'::timestamp AT TIME ZONE '-1';
        timezone
------------------------
 2011-10-20 11:00:00+02

您可以在chapter on time zones中找到线索。


转换时间戳列很简单。要切断时区部分:

ALTER TABLE tbl ALTER col TYPE timestamp;

要将所有时间转换为特定时区,例如“UTC”:

ALTER TABLE tbl ALTER col TYPE timestamp USING col::timestamp AT TIME ZONE 'UTC';

答案 1 :(得分:2)

如果这是一个实时服务器,您可能需要检查.conf文件中的时间戳设置吗?

例如,您可以在/etc/httpd/conf/httpd.conf

找到

并添加以下行setenv TZ America/<Timezone>