JQuery FullCalendar. Проблема с датой события, сохраняется на час позже!
Студия 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
то есть хранит информацию о временной зоне.
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 Yii: Bootstrap tabs, делаем активной вкладку на которую выполняется переход по ссылке (20.03.2014)
- 0 CodeIgniter: Всплывающая форма обратной связи на Ajax в Bootstrap Modal и проверкой Captcha (18.02.2014)
- 0 Opencart: Модуль Filter Product OpenCart_v1.5.x: Как скрывать недоступные опции в фильтре (23.10.2013)
- 0 WordPress: Добавить ссылку "Сохранить фото" для галереи на NextGen с эффектом Lightbox (12.04.2013)
- Выдвигающаяся из значка форма поиска на сайте (27.11.2017)
- Как убрать placeholder при клике по input (04.11.2017)
- Свой дизайн кнопок социальных сетей для сайта. Кнопки "Поделиться" (19.06.2017)
- Загрузка файлов (картинок) по ajax через форму для Opencart (04.09.2016)
- Замена текста при наведении на него мышью. События onmouseover и onmouseout (25.03.2016)
- Прилипание блока к верху сайта при его прокручивании (17.02.2016)
- Разделитель тысяч в эффекте наматываемого счётчика jquery countTo (05.04.2015)
- Сделать слайдер на Owl Carousel c текстом справа (03.02.2015)
- Скролл-эффекты CSS3 и JQuery при прокрутке страницы (13.01.2015)
- Модальное окно Bootstrap 3 с формой, отправляющей email по Ajax (JQuery/PHP/HTML5/JqBootstrapValidation) (20.08.2015)
- Несколько функций в body onload (08.03.2013)
- Как в iframe показывать только определённую область страницы (04.03.2013)
- jQuery Tooltips от Jörn Zaefferer. Всплывающие подсказки с помощью jQuery (08.12.2012)
- Team Sense: Многопользовательский календарь, заменяем радиокнопки на чекбоксы в выборе преподавателей. Массивы в Javascript. (06.12.2012)
- Team Sense: В календарь-расписание уроков добавлено разделение по преподавателям, которым присвоены свои цвета. (04.12.2012)
- CodeIgniter не передаёт $this->uri->segment(3) в функцию контроллера (передача переменной PHP->JavaScript->PHP) (28.11.2012)
- Случаи возникновения ошибки в IE: "Предполагается наличие идентификатора, строки или числа" (Expected identifier, string...) (23.11.2012)
- Воюем с форматом даты в JavaScript. Приведение формата даты в поле input в календаре системы TeamSense к более красивому виду. (18.11.2012)
- Хороший тон: Если у пользователя отключен Javascript в браузере или устаревшая версия браузера (09.08.2012)
- Русификация FullCalendar (13.01.2012)
- Yii: Красивенький и чистенький JavaScript плавно прокручивает страницу до якоря и делает лёгкий откат (22.04.2012)