如何让Outlook识别日光节约时间?



我有一个ics文件,用户试图导入Outlook for Mac 2011。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:anonymized
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Prague
BEGIN:DAYLIGHT
DTSTART:20140330T030000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYDAY=5SU;BYMONTH=3
TZNAME:CEST
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20141026T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYDAY=4SU;BYMONTH=10
TZNAME:CET
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20140807T001736Z
UID:12345
DTSTART;TZID=Europe/Prague:20140808T090000
DTEND;TZID=Europe/Prague:20140808T100000
CREATED:20140805T162858Z
LAST-MODIFIED:20140806T052758Z
SEQUENCE:0
STATUS:confirmed
SUMMARY:My event for which everyone with Outlook will be an hour late to
END:VEVENT
END:VCALENDAR

其他日历程序在布拉格上午9点显示此事件,但Outlook在上午10点显示它。看起来Outlook正在使用VTIMEZONE中的STANDARD块来计算时间,而从未应用DST偏移量。我认为,因为完全删除STANDARD块或将STANDARD块内的TZOFFSETTO更改为+0200,导致事件在正确的时间显示。

这两个显然都是不可能的,因为它们会破坏地球上所有其他日历应用程序。

我是否错过了为Outlook指定时区的内容?

Outlook无法处理示例时区中DAYLIGHT块的递归规则。

VTIMEZONE定义更改为:

BEGIN:VTIMEZONE
TZID:Europe/Prague
BEGIN:DAYLIGHT
DTSTART:20140330T030000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:CEST
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20141026T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:CET
END:STANDARD
END:VTIMEZONE

允许Outlook正确显示事件。

唯一的变化是将两个RRULE定义都更改为BYDAY=-1SU。这有两个好处,一是允许Outlook解析它,二是比5SU/4SU更正确地扩展了CEST/CET转换的规则。

您是否检查了Outlook中的时区设置?它可能显示从另一个时区看到的事件。另一种检查方法是从outlook创建一个事件并将其导出到ics,以查看该事件使用的时区。

相关内容

  • 没有找到相关文章

最新更新