0
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 で作成された新しいイベントの ics です。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 のコードは、同じ ics に対して正常に動作します。

4

2 に答える 2

0

これを見たとき、私は当時最新のバージョン 2.2.30 を使用していました。この問題はバージョン 2.2.31 で解決されており、それ以降のバージョンでも修正される予定です。バージョン 2.2.31 のリリース ノートを参照してください: https://github.com/rianjs/ical.net/blob/master/release-notes.md

私はこれを最新のもの、つまり 2.2.33 で確認しましたが、現在は正常に動作しています。

于 2017-04-04T09:57:16.083 に答える