Outlook 中可能存在时区分析错误



我试图确保这是Outlook的问题。

我正在生成一个指定事件时区的ics文件:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.example.com
X-WR-TIMEZONE:America/Chicago
X-PUBLISHED-TTL:P1W
BEGIN:VEVENT
UID:56bba0729f450
DTSTART;TZID=America/Chicago:20160212T170000
SEQUENCE:0
TRANSP:OPAQUE
DTEND;TZID=America/Chicago:20160212T183000
SUMMARY:Beer-o-clock
CLASS:PUBLIC
DTSTAMP:20160210T144122Z
END:VEVENT
BEGIN:VTIMEZONE
TZID:America/Chicago
X-LIC-LOCATION:America/Chicago
BEGIN:DAYLIGHT
TZNAME:CDT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CST
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
DTSTART:19701101T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR

此邀请有效,但是如果您在Outlook中的其他时区打开它(例如,当我从太平洋时区打开它时看到它时,它将无法识别时区更改。时区更改由其他应用程序(如mac os日历或Google日历)识别。

当我重新排列日历文件以使VEVENT定义在VTIMEZONE定义之后时,它可以在 Outlook 中工作:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.example.com
X-WR-TIMEZONE:America/Chicago
X-PUBLISHED-TTL:P1W
BEGIN:VTIMEZONE
TZID:America/Chicago
X-LIC-LOCATION:America/Chicago
BEGIN:DAYLIGHT
TZNAME:CDT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CST
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
DTSTART:19701101T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:56bba0729f450
DTSTART;TZID=America/Chicago:20160212T170000
SEQUENCE:0
TRANSP:OPAQUE
DTEND;TZID=America/Chicago:20160212T183000
SUMMARY:Beer-o-clock
CLASS:PUBLIC
DTSTAMP:20160210T144122Z
END:VEVENT
END:VCALENDAR

这似乎是 Outlook 中的解析错误,但我不完全确定。我不知道我对 ics 文件的生成顺序有多少控制权,而无需破解供应商代码(我希望不要这样做)。

这是特定于 Outlook 的事情还是邀请定义有其他问题?

iCalendar 规范不要求您将VTIMEZONE组件放在顶部。 但是,当然,人们可以自由地实现他们选择的规范。

虽然您可能在 RFC5545/RFC5546 中找不到任何声明 VTIMEZONE 组件必须在 VEVENT 之前的内容,但这些规范中给出的所有示例都按此顺序排列,实践显然是在 VEVENT 之前使用 VTIMEZONE。从iCalendar消费者的角度来看,这也是有意义的,因为VTIME中引用了VTIMEZONE TZID。

如果不遵循通常的做法,你真的是在自找麻烦。假设您以其他方式解决了 Outlook 问题,那么您很可能明天会遇到另一个客户端的互操作问题。因此,您最好修复iCalendar流。

最新更新