Так что эта ветка кажется довольно старой (и не решила проблему с самой последней версией гема icalendar - 2.3.0).Мне недавно пришлось создавать события календаря на весь день в формате ics.Я обнаружил, что это гораздо лучшее решение (и, похоже, оно работает так, как вы ожидаете, что календари его обработают) - см. Фрагмент ниже
date = Date.new(2010,11,17)
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new date
event.dtstart.ical_param "VALUE", "DATE"
event.dtend = Icalendar::Values::Date.new (date + 1.day)
event.dtend.ical_param "VALUE", "DATE"
puts event.to_ical
Приведенный выше код выдает следующий вывод:
BEGIN:VEVENT
DTSTAMP:20150521T162712Z
UID:4c239930-15ba-44b4-a045-c6fae3d858d2
DTSTART;VALUE=DATE:20101117
DTEND;VALUE=DATE:20101118
END:VEVENT
Обратите внимание, что с датой не связано время.Код в предыдущем ответе в настоящее время производит время.Мне пришлось покопаться в исходном коде icalendar, чтобы выяснить это решение.
Надеюсь, это поможет кому-то еще.
Ура!