首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iCalendar夏令时

iCalendar夏令时
EN

Stack Overflow用户
提问于 2015-04-02 12:49:38
回答 1查看 4.2K关注 0票数 3

我给我的用户一个链接,他们可以用它把他们在我的系统上的约会放在他们的日历软件中,比如Outlook,.使用iCalendar URL。

我使用以下代码生成文件中的日期:

代码语言:javascript
复制
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。

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-02 13:44:33

您需要确保ics文件包括时区定义。

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29413413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档