使用.Net API阅读Google日历重复活动

时间:2011-06-20 20:41:03

标签: c# .net api google-calendar-api

我正在跨不同的日历格式进行一些同步,其中一个日历提供商是Google,其他提供商通过他们的API以面向对象的方式公开这些数据,但在Google中,它通过Events.Recurrence公开,如下所示:

"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"

有没有办法将其解析为面向对象的格式? 即一个递归对象? 我在网上看到的所有样本都设置了这些值,而不是阅读它。任何阅读和写作的样本都是受欢迎的。

2 个答案:

答案 0 :(得分:2)

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;
    }

在我的项目中没有必要进行迭代,但我认为你明白了。

答案 1 :(得分:1)