2011-06-20 31 views
1

我正在跨不同日曆格式進行同步,其中一個日曆提供程序是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" 

有什麼方法可以將它解析爲面向對象的格式嗎? 即重複對象? 我在網上看到的所有樣本都設置了這些比較容易閱讀的值。任何閱讀和寫作樣本都是受歡迎的。

回答

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

在我的項目中不需要迭代,但我認爲你有這個想法。

+0

近期將檢查這一點,就會讓你知道會發生什麼 – Raymund

+0

我不知道爲什麼你給了EventEntry.Times一個解決方案,如果raymund的詢問你Event.Recurrence對象......我還需要針對Recurrence對象的解決方案並獲取.net日期時間值。 –

+0

好點,我不知道我是如何錯過了。由於它是一個很大的字符串,我想說你必須/使用一堆參數來創建自己的類,並且使用正確的格式返回所有這些字符串的單個方法以用於重複字符串 – KristianMedK

相關問題