2010-10-06 141 views
4

我想從ASP.NET網站發送Outlook約會。我找到了發送這個here的代碼,並試圖實現它。但由於某些未知原因,它無法正常工作。TZOFFSETFROM和TZOFFSETTO意味着什麼

運行代碼的服務器位於US/Central時區。我想把這個任命發給倫敦的客戶。所以這裏有一個夏令時問題,需要解決。

我還沒有找到關於組成預約的字符串的任何可以理解的解釋。我認爲時區問題可以通過TZOFFSETFROMTZOFFSETTO來解決,但由於我不知道這些工作是如何工作的,所以我不明白該怎麼做。

有人可以用簡單的英語解釋這些東西嗎?

編輯

這裏是正在使用的計算時區字符串的一部分 -

string timezone = "BEGIN:VTIMEZONE" 
        + "\r\n" + "TZID:US/Central" 
        + "\r\n" + "X-MICROSOFT-CDO-TZID:11" 
        + "\r\n" + "BEGIN:STANDARD" 
        + "\r\n" + "DTSTART:16010101T020000" 
        + "\r\n" + "TZOFFSETFROM:-0500" 
        + "\r\n" + "TZOFFSETTO:-0600" 
        + "\r\n" + "RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=11;BYDAY=1SU" 
        + "\r\n" + "END:STANDARD" 
        + "\r\n" + "BEGIN:DAYLIGHT" 
        + "\r\n" + "DTSTART:16010101T020000" 
        + "\r\n" + "TZOFFSETFROM:-0600" 
        + "\r\n" + "TZOFFSETTO:-0500" 
        + "\r\n" + "RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=2SU" 
        + "\r\n" + "END:DAYLIGHT" 
        + "\r\n" + "END:VTIMEZONE"; 

下面這兩個屬性(我並不確切地知道他們的類型名稱,所以我用「屬性」指向他們,我的道歉)在兩個地方使用,第一次在BEGIN:STANDARD之後,BEGIN:DAYLIGHT之後。爲什麼?如果我在BEGIN:VEVENT區塊中指定DTSTART;TZID=US/Central:20101006T100000Z的開始日期,那麼客戶在倫敦展望的時間是幾點?

第二個編輯
OK,現在我明白,這VTIMEZONE定義一個特定的時區。指定時區後,我需要在VEVENT部分指定日曆的時間,即。現在應該是現在的時間嗎?我的意思是,在指定時間時,我應該考慮夏令時,還是從該時區獲取當前時間並在那裏使用?

第三編輯

我應該在以下塊指定什麼時候 -

string event = "BEGIN:VEVENT" 
       + "\r\n" + "DTSTAMP:{8}"    
       + "\r\n" + "DTSTART;TZID=US/Central:{0}" // What time should I specify here? 
       + "\r\n" + "SUMMARY:{7}" 
       ................. 

我應該考慮夏令指定DTSTART的時候,還是應該始終指定標準時,它會自動調整爲夏令時?

回答

10

TZOFFSETFROM是夏令時開始運行時GMT的本地時間偏移量,TZOFFSETTO是標準時間運行時的GMT本地時間偏移量。

+0

你可以看看編輯? – 2010-10-06 12:13:49

+0

閱讀本文,它將有助於加載:http://www.kanzaki.com/docs/ical/vtimezone.html – Lazarus 2010-10-06 13:00:29

+0

是的,閱讀它。這真的很有幫助。我知道它指定了一個時區信息。我只需要知道,如果我指定時區的所有信息,那麼我需要在VEVENT塊中提供什麼時間?我的意思是,我應該在夏令時開始時指定夏令時,還是應該始終指定標準時間,並且會自動根據夏令時進行調整? – 2010-10-06 13:05:11