使用.Net API阅读Google日历定期事件

本文关键字:事件 日历 Google Net API 阅读 使用 | 更新日期: 2023-09-27 17:59:50

我正在不同的日历格式之间进行一些同步,其中一个日历提供商是Google。其他提供商通过其API以面向对象的方式公开这些数据,但在Google中,它是通过事件公开的。重复如下:

"DTSTART;TZID=Pacific/Auckland:20110629T100000'r'n
DTEND;TZID=Pacific/Auckland:20110629T110000'r'n
RRULE:FREQ=DAILY;COUNT=10;INTERVAL=3'r'n
BEGIN:VTIMEZONE'r'n
TZID:Pacific/Auckland'r'n
X-LIC-LOCATION:Pacific/Auckland'r'n
BEGIN:DAYLIGHT'r'n
TZOFFSETFROM:+1200'r'n
TZOFFSETTO:+1300'r'n
TZNAME:NZDT'r'n
DTSTART:19700927T020000'r'n
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU'r'n
END:DAYLIGHT'r'n
BEGIN:STANDARD'r'n
TZOFFSETFROM:+1300'r'n
TZOFFSETTO:+1200'r'n
TZNAME:NZST'r'n
DTSTART:19700405T030000'r'n
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU'r'n
END:STANDARD'r'n
END:VTIMEZONE"

有什么方法可以将其解析为面向对象的格式吗?即Recurrence对象?我在网上看到的所有样本都在设置这些值,这比阅读它更容易。欢迎任何阅读和写作样本。

使用.Net API阅读Google日历定期事件

EventEntry.Times是一个集合,因此您必须将其解析为ExtensionCollection对象,然后可以对其进行迭代。

foreach (Google.GData.Calendar.EventEntry ev in calFeed.Entries)
    {
        CalendarEvents ce = new CalendarEvents();
        ce.Title = ev.Title.Text;
        ExtensionCollection<When> v = ev.Times;
        ce.Date = v[0].StartTime;
        ce.Content = ev.Content.Content;
    }

迭代在我的项目中没有必要,但我想你已经明白了。

试试这个库:http://icalparser.sourceforge.net/