JQuery FullCalendar. Проблема с датой события, сохраняется на час позже!

JQuery FullCalendar. Проблема с датой события, сохраняется на час позже! Когда добавляю или редактирую события в календарe FullCalendar (jquery плагин от Adam Show), то они съезжают на час позже, сдвигаются на один час во времени

Студия LOCO начинает работать с календарём FullCalendar, jquery плагином, разработанным Adam Show и чем-то напоминающим Google Calendar. 

У нас возникла странная ошибка - дата события при сохранении сдвигалась на 1 час позже по времени. В Базе данных дата и время хранятся в отдельных полях, но при выборке объединяются в вид "2011-12-19 24:06:06". Поиск решения проблемы вывел к такому итогу. 

В функциях сохранения и добавления события использовалась операция Javascript:

var start = Date.parse(calEvent.start) / 1000; // в формат timestamp - "1323930600"

Проблема - timestamp не содержит в себе временную зону timezone, а мы потом этот timestamp преобразовывали в дату функцией Date(), которая использует своею временную зону. Получался сдвиг на один час, или на количество часов, на которое идёт разница во времени.

Мы заменили обработку Date.parse на formatDate:

var start = $.fullCalendar.formatDate(calEvent.start, "yyyy-MM-dd HH:mm:ss");

 то есть не гоняем дату в timestamp и обратно. Ещё можно использовать full ISO 8601 вместо timestamp при передаче в FullCalendar:

$start_timestamp = 1303776000;
$startISO = date('c', $start_timestamp); // выдаёт формат: 2011-04-26T00:00:00+00:00

то есть хранит информацию о временной зоне.



Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.