Я использую плагин jQuery Fullcalendar (http://arshaw.com/fullcalendar). Я использую его только для событий «полного дня». Когда пользователь создает событие, я сохраняю его в своей базе данных через PHP в качестве даты (2012-01-12). При отправке списка событий в FullCalendar через AJAX, я конвертирую дату в Unix time.
Проблема, которую я предвижу, – это тот случай, когда сервер находится в США с часовым поясом США, а клиент находится в Европе. Сервер отправляет событие на 2012-01-12 00:00:00 (US Time), которое преобразуется во время Unix. Затем клиент может увидеть событие, которое находится в 2012-01-12 08:00:00 (8 часов спустя).
Как я могу убедиться, что если какое-то событие в полночь, то в полночь ВЕЗДЕ – не нужно настраивать часовой пояс. Если пользователь создает полнодневное мероприятие 12 января, мне нужен каждый пользователь по всему миру, чтобы увидеть его в эту же дату.
У FullCalendar есть опция для этого, ignoreTimezone (см .: http://arshaw.com/fullcalendar/docs/event_data/ignoreTimezone/ ), просто убедитесь, что для этого параметра установлено значение true (которое по умолчанию *), и пользователь увидит в то же время, что сервер отправляет, независимо от часового пояса пользователя.
(* лично я считаю, что дефолт ошибочен, и разработчик, похоже, признает это в документах, поэтому было бы полезно указать явно).