2015-04-01 102 views
0

我通過郵件向MS Outlook發送事件,但事件時間與我發送的事件不同。icalendar事件時區與用戶時區不匹配時間

我也想支持像微軟的Outlook,谷歌日曆..等

用於實現的iCalendar事件然後讓我知道任何好的資源或API的所有應用程序事件iCalender事件。 e.g

發送:

Start Time : 12:40 P.M. 
End Time : 01:00 P.M. 

在用戶端中,Outlook顯示在1小時後事件。

Start Time : 01:40 P.M. 
End Time : 02:00 P.M. 

我想要我發送相同的結果。

以下是我的icalendar碼。

$ical = 'BEGIN:VCALENDAR' . "\r\n" . 
     'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" . 
     'VERSION:2.0' . "\r\n" . 
     'METHOD:REQUEST' . "\r\n" . 
     'BEGIN:VTIMEZONE' . "\r\n" . 
     'TZID:'.date_default_timezone_get() . "\r\n" . 
     'BEGIN:STANDARD' . "\r\n" . 
     'DTSTART:20091101T020000' . "\r\n" . 
     'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" . 
     'TZOFFSETFROM:-0400' . "\r\n" . 
     'TZOFFSETTO:-0500' . "\r\n" . 
     'TZNAME:EST' . "\r\n" . 
     'END:STANDARD' . "\r\n" . 
     'BEGIN:DAYLIGHT' . "\r\n" . 
     'DTSTART:20090301T020000' . "\r\n" . 
     'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" . 
     'TZOFFSETFROM:-0500' . "\r\n" . 
     'TZOFFSETTO:-0400' . "\r\n" . 
     'TZNAME:EDST' . "\r\n" . 
     'END:DAYLIGHT' . "\r\n" . 
     'END:VTIMEZONE' . "\r\n" . 
     'BEGIN:VEVENT' . "\r\n" . 
     'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" . 
     'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" . 
     'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" . 
     'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" . 
     'DTSTAMP:'.date("Ymd\TGis"). "\r\n" . 
     'DTSTART;TZID="'.date_default_timezone_get().'":'.date("Ymd", strtotime($startTime))."T".date("His", strtotime($startTime)). "\r\n" . 
     'DTEND;TZID="'.date_default_timezone_get().'":'.date("Ymd", strtotime($endTime))."T".date("His", strtotime($endTime)). "\r\n" . 
     'TRANSP:OPAQUE'. "\r\n" . 
     'SEQUENCE:1'. "\r\n" . 
     'SUMMARY:' . $subject . "\r\n" . 
     'CLASS:PUBLIC'. "\r\n" . 
     'PRIORITY:5'. "\r\n" . 
     'BEGIN:VALARM' . "\r\n" . 
     'TRIGGER:-PT15M' . "\r\n" . 
     'ACTION:DISPLAY' . "\r\n" . 
     'DESCRIPTION:Reminder' . "\r\n" . 
     'END:VALARM' . "\r\n" . 
     'END:VEVENT'. "\r\n" . 
     'END:VCALENDAR'. "\r\n"; 
+1

嘗試在Outlook中創建新的約會,然後將其保存爲iCalendar文件。然後與你自己的文件進行比較。因此,你將能夠找到差異。 – 2015-04-01 07:06:14

+0

我會檢查並通知你。 – 2015-04-01 07:09:11

回答

1

什麼是你的TZID參數需要匹配的是在TZIDVTIMEZONE對象。

+0

我想要發送同樣的結果然後我應該設置什麼時區?沒有時區我們應該發送事件嗎? – 2015-04-01 07:02:54

+1

那麼現在你把它設置爲'東部時間'的屬性,並且'date_default_timezone_get()'的結果爲參數。這是錯誤的。我不知道你在問什麼。 – Evert 2015-04-01 07:07:33

+0

我用date_default_timezone_get()更新了同一時區的代碼。但是我想知道我是否應該得到同樣的時間,例如開始時間:下午12:40和結束時間:下午01:00。我想和我在日曆中發送的一樣。 – 2015-04-01 07:14:00