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

问题描述:

我正在跨不同日历格式进行同步,其中一个日历提供程序是Google,其他提供程序通过API以面向对象的方式公开这些数据,但在Google中它通过Events.Recurrence as this:使用.Net 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" 

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

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

在我的项目中不需要迭代,但我认为你有这个想法。

+0

近期将检查这一点,就会让你知道会发生什么 – Raymund

+0

我不知道为什么你给了EventEntry.Times一个解决方案,如果raymund的询问你Event.Recurrence对象......我还需要针对Recurrence对象的解决方案并获取.net日期时间值。 –

+0

好点,我不知道我是如何错过了。由于它是一个很大的字符串,我想说你必须/使用一堆参数来创建自己的类,并且使用正确的格式返回所有这些字符串的单个方法以用于重复字符串 – KristianMedK