fullcalendar разбор даты ISO8601 не работает

Я получаю действительный ISO8601 обратно из строки JSON, но он не отображается правильно в полном календаре.

создание формата даты с форматированием JAVA: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sZ") df.setTimeZone(TimeZone.getTimeZone("Европа/Берлин"))

конфиг календаря:

ignoreTimezone: false, timeFormat=H:mm{ - H:mm}

JSON-результат:

{
    "id":1,
    "title":"Date with Chuck Norris",
    "start":"2011-12-02T09:30:00.0+0100",
    "end":"2011-12-02T10:30:00.0+0100",
    "color":"",
    "allDay":false
}
  • взять время начала 9:30 - это значение DB, но +0100 не распознается, поэтому отображаемое время 9:30, но это неправильно, должно быть 10:30. то же самое для даты окончания

...

(чтобы убедиться, что он будет правильно обработан, я сделал еще одну вещь в config:) eventRender: function(event, element) { event.start = $.fullCalendar.parseDate(event.start); // попробовал также $.fullCalendar.parseISO8601() event.end = $.fullCalendar.parseDate(event.end); // попробовал также $.fullCalendar.parseISO8601() }

  • пробовал с onEventRender и parseDate(), но ничего не происходит

  • пробовал с onEventRender и parseISO8601() -> но ничего не происходит и JS-Error (см. вложение: js-error.png)

используя jquery 1.6.3 и последний полный календарь 1.5.2

Большое тебе спасибо!

Ваше здоровье,

Марко


person grailsInvas0r    schedule 02.12.2011    source источник


Ответы (1)


Насколько я понимаю, ваш формат даты [2011-12-02T09:30:00.0+0100] означает 9:30 в европейском/берлинском формате. Я попытался создать событие, и моя система была настроена на формат GMT, и в календаре оно отображается как 8:30. Если вы передадите этот формат и проверите его в том же часовом поясе (европейском/берлинском), никакой разницы не будет видно.

person Rohith Nair    schedule 02.12.2011
comment
Эй Поклонник. Спасибо за ваш ответ. Хорошо, я правильно понял. Если я живу в Германии (с utc +01:00) и получаю строку даты и времени, как показано в примере с +01:00 в конце, ничего не произойдет, потому что я живу в 01:00-диапазон? это проводной! так что, если бы я жил в часовом поясе с +02:00 и тем же результатом json +01:00, он создал бы -1 час = 08:30? правильно ли я понимаю? так что в таком случае, какое может быть решение с fullcalendar? какие-либо предложения? большое спасибо - person grailsInvas0r; 03.12.2011
comment
Должно быть 10:30 (+2:00). Что происходит в fullcalendar, так это то, что созданный объект даты находится в часовом поясе клиента, а смещение (60 минут) применяется к объекту даты часового пояса клиента. Так что вы должны помнить об этом. Я думаю, что лучше поставить ignoreTimeZone:true и выполнять любую обработку на стороне сервера, чтобы fullcalendar просто отображал заданную дату и время. - person Rohith Nair; 04.12.2011