是否存在ICS文件中缺少Olsen TZ TZID格式的解决方法

Pau*_*ter 12 icalendar outlook timezone

我最近在电子邮件中收到了ICS文件的问题.我的Outlook 2010副本无法正确识别时区.以下是在ICS文件中表示会议开始时间的方式:

DTSTART;TZID=America/Los_Angeles:20110928T183000
Run Code Online (Sandbox Code Playgroud)

当Outlook导入此文件时,它将时间从太平洋时间下午6:30更改为太平洋时间下午7:30.经过一些实验,我能够通过更改时区格式获得在Outlook中正确导入的ICS文件:

DTSTART;TZID="Pacific Time":20110928T183000
Run Code Online (Sandbox Code Playgroud)

经过一些进一步的研究后,我发现ICS文件规范留下了时区识别问题,但建议使用Olsen TZ数据库.似乎Microsoft Outlook团队已选择忽略此建议.

鉴于Outlook是一个相当受欢迎的日历客户端,是否有一种可靠的方法来格式化仍然与其他客户端兼容的Outlook的ICS时区?我对此问题的最大担忧是Outlook导入期间的无提示错误.用户可以在错误的时间轻松地出现会议,因为Outlook没有发出任何警告,表示它对时区感到困惑.我们应该简单地将Outlook用户引导到不同的文件格式吗?

注意:我知道这个问题与之前的帖子类似,但该帖子上的引用似乎已经过期,我想知道是否有更好的解决方案.

Aub*_*her 6

没有完整的iCalendar文件很难判断,但你是否定义/ VTIMEZONE你的日历文件中有一个组件来定义America/Los_Angeles应该是什么?

就像是:

BEGIN:VTIMEZONE
TZID:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
Run Code Online (Sandbox Code Playgroud)