Когда добавляю или редактирую события в календарe FullCalendar (jquery плагин от Adam Show), то они съезжают на час позже, сдвигаются на один час во времени
Студия
У нас возникла странная ошибка — дата события при сохранении сдвигалась на 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