События FullCalendar не отображаются только в Safari
Я уже работаю с плагином FullCalendar, и мне удалось заставить его работать в FF и Chrome, но я не могу понять, почему события не отображаются в Safari.
Я использую бэкэнд Rails для извлечения событий в виде массива. Это объект JSON для событий, отображаемых FireBug.
_end: Invalid Date
_id: "1953"
_start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST)
allDay: false
backgroundColor: "#F60 !important"
className: Array[0]
color: "#FFFFFF !important"
description: ""
end: Invalid Date
start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST)
textColor: "#FFFFFF !important"
__proto__: Object
У меня нет ошибок на консоли safari. Недействительная дата окончания отображается как null
в FF и Chrome.
Вот как я заполняю события
event[:id] = each_event.id
event[:title] = each_event.event_title
event[:allDay] = each_event.all_day?
event[:start] = each_event.start_time.strftime('%Y-%m-%d %H:%M:00')
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present?
event[:color] = '#FFFFFF !important'
event[:backgroundColor] = (each_event.user == current_user) ? '#F60 !important' : '#090 !important'
event[:backgroundColor] = '#090 !important' unless each_event.private?
event[:textColor] = '#FFFFFF !important'
Я попытался преобразовать формат datetime в формат iso8601, и это не сработало. Я совершенно не понимаю, в чем проблема. Я бы очень признателен за помощь.
Ответы
Ответ 1
У меня была аналогичная проблема.
Что помогло мне использовать функцию .iso8601 DateTime:
event[:start] = each_event.start_time.iso8601
event[:end] = each_event.end_date.to_time.iso8601 if each_event.end_date.present?
Формат iso8601 дает выходные данные: 2017-01-25T16: 15: 49 + 01: 00
Ответ 2
Ваша строка не в правильном формате.
Вместо использования
event[:start] = each_event.start_time.strftime('%Y-%m-%d %H:%M:00')
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present?
попробуйте использовать
event[:start] = each_event.start_time.to_json
event[:end] = each_event.end_date.to_time.to_json if each_event.end_date.present?
Согласно документации FullCalendar, для свойств начала и конца требуется объект Date или строка в формате IETF, формате ISO8601 или временная метка UNIX. Поскольку strftime('%Y-%m-%d %H:%M:00')
ни один из них, код не будет работать.
http://arshaw.com/fullcalendar/docs/event_data/Event_Object/
Ответ 3
У меня была похожая проблема. Я изменил свой формат даты с:
"2019-05-09 04:00:00"
в
"2019-05-09T04: 00: 00"