2015-04-02 190 views
1

我給我的用戶一個鏈接,他們可以用它們將我的系統中的約會放在Outlook等日曆軟件中......使用iCalendar URL。iCalendar夏令時

我生成使用此代碼文件中的日期:

echo "DTSTART;TZID=" . date_default_timezone_get() . ":" . strftime('%Y%m%d', strtotime($app->app_start)) . 'T' . strftime('%H%M%S', strtotime($app->app_start)) . '' . $eol; 
echo "DTEND;TZID=" . date_default_timezone_get() . ":" . strftime('%Y%m%d', strtotime($app->app_end)) . 'T' . strftime('%H%M%S', strtotime($app->app_end)) . '' . $eol; 

這一直工作正常。但是現在我們處於夏令時,夏令時中的所有約會在我的Outlook中顯示1小時太晚。 DST之前的任命都可以。

所以,例如在我的ICS:

DTSTART; TZID =歐洲/布魯塞爾:20150318T083000 DTEND; TZID =歐洲/布魯塞爾:20150318T090000

這正確地顯示在我的日曆,從08:30直到09:00

DTSTART; TZID =歐洲/布魯塞爾:20150407T083000 DTEND; TZID =歐洲/布魯塞爾:20150407T090000

這是我的問題,這說明錯誤在我的日曆:從09:30至10:30。

我該如何解決這個問題?

回答

1

您需要確保您的ics文件包含時區定義,例如

BEGIN:VTIMEZONE 
TZID:US Mountain Standard Time 
BEGIN:STANDARD 
RRULE:FREQ=YEARLY;BYMONTH=0;BYDAY=+10SU 
DTSTART:16010000T000000 
TZOFFSETFROM:-0700 
TZOFFSETTO:-0700 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VTIMEZONE 
TZID:Eastern Standard Time 
BEGIN:STANDARD 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=+11SU 
DTSTART:16011101T020000 
TZOFFSETFROM:-0400 
TZOFFSETTO:-0500 
END:STANDARD 
BEGIN:DAYLIGHT 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=+12SU 
DTSTART:16010302T020000 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0400 
END:DAYLIGHT 
END:VTIMEZONE 
+0

謝謝,我將歐洲/布魯塞爾時區添加到VTIMEZONE,它現在可以工作。 一旦有人需要歐洲/布魯塞爾VTIMEZONE: 'BEGIN:VTIMEZONE TZID:歐洲/布魯塞爾 X-LIC-地點:歐洲/布魯塞爾 BEGIN:日光 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 TZNAME :CEST DTSTART:19700329T020000 RRULE:FREQ = YEARLY; BYMONTH = 3; BYDAY = -1SU END:日光 BEGIN:STANDARD TZOFFSETFROM:0200 TZOFFSETTO:0100 TZNAME:CET DTSTART:19701025T030000 RRULE: FREQ = YEARLY; BYMONTH = 10; BYDAY = -1SU END:STANDARD END:VTIMEZONE' – user1026090 2015-04-02 14:54:49