簡體   English   中英

iCalendar 夏令時

[英]iCalendar daylight saving time

我給我的用戶一個鏈接,他們可以用來將我系統上的約會放在他們的日歷軟件中,例如 Outlook,...使用 iCalendar URL。

我使用以下代碼在文件中生成日期:

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。

我怎樣才能解決這個問題?

您需要確保您的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM