Django TimeStamp несоответствие - PullRequest
       19

Django TimeStamp несоответствие

1 голос
/ 19 октября 2011

Я работаю над веб-приложением для планирования работы и у меня возникла очень странная проблема. Приложение использует Django и FullCalendar. В приложении пользователи могут создавать события в FullCalendar, а время начала и окончания сохраняются в виде поля DateTime в базе данных PostgreSQL. Когда события возвращаются в календарь, я использую Django DateTag для преобразования времени в UnixTimestamp. Все работает отлично, за исключением того, что временная метка будет случайным образом возвращена на один час раньше для всех событий. Примерно каждые несколько раз, когда я захожу на страницу, отметка времени будет отключена на один час.

Кто-нибудь еще сталкивался с подобной проблемой и смог найти решение?

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

Подозрительно звучит как проблема часового пояса, возможно, в связи с переходом на летнее время.
Вам известны различия с этими типами в 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

Вы можете найти подсказку в главе о часовых поясах .


Преобразовать столбцы меток времени просто.Чтобы просто отрезать часть часового пояса:

ALTER TABLE tbl ALTER col TYPE timestamp;

Чтобы преобразовать все время в определенный часовой пояс, например UTC:

ALTER TABLE tbl ALTER col TYPE timestamp USING col::timestamp AT TIME ZONE 'UTC';
2 голосов
/ 20 октября 2011

Если это живой сервер, возможно, вам нужно проверить файлы .conf для установки меток времени?

Например, вы можете найти это в /etc/httpd/conf/httpd.conf

и добавить следующую строку setenv TZ America/<Timezone>

...