Главная » Полезные статьи » Язык JavaScript » 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

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи