我正在创建一个应用程序来使用 iCal4j(1.0.3) api 创建 .ics 文件,它工作正常。但是我遇到了时区问题。我添加了 ZoneInfoOutlook(1.0.2) 库并一直在使用它来创建我的 .ics 文件。但是,Outlook 无法识别标准时区。例如,当我生成这个时:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Ben Fortuna//iCal4j 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20120808T211508Z
DTSTART;TZID=America/New_York:20120808T020000
DTEND;TZID=America/New_York:20120808T180000
SUMMARY:NewYork Event
LOCATION:Manhattan
DESCRIPTION:This is a test Description
TZID:America/New_York
END:VEVENT
BEGIN:VTIMEZONE
TZID:America/New_York
TZURL:http://tzurl.org/zoneinfo-outlook/America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
Outlook 无法识别时区。经过一些实验,我发现在稍微修改文件后,将 America/New_York 更改为东部标准时间,Outlook 可以完美读取时区。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Ben Fortuna//iCal4j 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20120808T211508Z
DTSTART;TZID="Eastern Standard Time":20120808T020000
DTEND;TZID="Eastern Standard Time":20120808T180000
SUMMARY:NewYork Event
LOCATION:Manhattan
DESCRIPTION:This is a test Description
TZID:Eastern Standard Time
END:VEVENT
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
X-LIC-LOCATION:Eastern Standard Time
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
判断此示例,Outlook 对其时区使用非标准标签。
我目前正在针对 Microsoft Outlook 2010 (14.0.6117.5001) SP1 进行测试。
有人知道 iCal mod 或某种解决方法以使时区与 Microsoft Outlook 完全兼容吗?
或者甚至是另一个允许我创建与 Outlook 兼容的 .ics 文件的 api?