Новые события, созданные непосредственно на iCloud.com, не анализируются ical.net
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Asia/Calcutta
X-LIC-LOCATION:Asia/Calcutta
BEGIN:STANDARD
DTSTART:18800101T000000
RDATE;VALUE=DATE-TIME:18800101T000000
TZNAME:HMT
TZOFFSETFROM:+055328
TZOFFSETTO:+055320
END:STANDARD
BEGIN:STANDARD
DTSTART:19411001T000000
RDATE;VALUE=DATE-TIME:19411001T000000
TZNAME:BURT
TZOFFSETFROM:+055320
TZOFFSETTO:+0630
END:STANDARD
BEGIN:STANDARD
DTSTART:19420515T000000
RDATE;VALUE=DATE-TIME:19420515T000000
RDATE;VALUE=DATE-TIME:19451015T000000
TZNAME:IST
TZOFFSETFROM:+0630
TZOFFSETTO:+0530
END:STANDARD
BEGIN:STANDARD
DTSTART:19420901T000000
RDATE;VALUE=DATE-TIME:19420901T000000
TZNAME:IST
TZOFFSETFROM:+0530
TZOFFSETTO:+0630
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:New Event
UID:D1A9EEAF-AAE9-44B1-92B9-33A620779FA6
DTSTART;X-VOBJ-ORIGINAL-TZID=Asia/Calcutta:20170118T120000Z
DTEND;X-VOBJ-ORIGINAL-TZID=Asia/Calcutta:20170118T130000Z
END:VEVENT
END:VCALENDAR
Выше приведено описание нового события, созданного на iCloud. Я столкнулся с проблемой при получении событий из iCloud. Проблема в том, что события, созданные непосредственно в iCloud, не анализируются с помощью ical.net. Пока что разбирается dday.ical. События, созданные с использованием ical.net, анализируются правильно. Выше ics правильно анализируется DDay.iCal.
Using ical.net
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(ics))
IICalendarCollection calendars = Calendar.LoadFromStream(stream, Encoding.UTF8);
Ошибка происходит в Calendar.LoadFromStream, и ошибка - строка не была распознана как допустимый DateTime.
Using Dday.iCal
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(ics))
IICalendarCollection calendars = iCalendar.LoadFromStream(stream, Encoding.UTF8);
Выше код Dday отлично работает для той же самой ИКС.
2 ответа
Когда я увидел это, я использовал версию 2.2.30, которая была последней в то время. Эта проблема решена в версии 2.2.31, и исправление будет доступно и в более поздней версии. См. Информацию о выпуске для версии 2.2.31: https://github.com/rianjs/ical.net/blob/master/release-notes.md
Я проверил это на последнем на данный момент, то есть 2.2.33, и теперь он работает нормально.
Проблема с компонентом VTIMEZONE, который не анализируется ical.net. Когда мы создаем запрос на получение всех встреч, мы запрашиваем свойства события, которое мы хотим получить в ответ. Если не требуется, удалите компонент часового пояса из запроса, т.е. не запрашивайте компонент часового пояса. Удалить из вашего запроса. Спасибо