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

时间:2011-09-15 19:47:08

标签: outlook timezone icalendar

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

DTSTART;TZID=America/Los_Angeles:20110928T183000

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

DTSTART;TZID="Pacific Time":20110928T183000

经过一些进一步的研究后,我发现ICS file specification留下了时区识别问题,但建议使用the Olsen TZ database。似乎Microsoft Outlook团队已选择忽略此建议。

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

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

3 个答案:

答案 0 :(得分:5)

如果没有完整的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

答案 1 :(得分:1)

不是将时区定义添加到ics文件中,最好提及UTC本身的事件开始/结束时间。 然后,ICS文件的使用者 - 在您的情况下为outlook - 应该能够在从他们的日历上呈现会议事件之前,从UTC(从ics文件)到最终用户的首选时区设置进行时区转换。

<强>优点: 这样您就不必自己添加正确的时区偏移量(VTIMEZONE组件)。 此外,ics文件更小,更清晰,易于阅读。

<强>参考文献: 即使是谷歌似乎也是以这种方式自行处理时区 - Google timezone handling

希望这有帮助。

答案 2 :(得分:0)

假设提问者住在洛杉矶,并使用OUTLOOK2010。 并且20110928T183000的开始时间基于PDT 如果要使会议成功,请在说明中添加会议约会项,联系人和Google Map URL地址电话的开放时间。 当然,会议项目应添加管理器和与会者,但是很难设置。 并且,大约75个八位位组的回车和插入空间很困难。因此,只有设置组织者和与会者才能在说明中进行书写。

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-TIMEZONE:America/Los_Angeles
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-WR-TIMEZONE: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
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20110928T183000
DTEND;TZID=America/Los_Angeles:20110928T203000
LOCATION:meeting room in Los Angeles
Description:maps link \nhttp... \n phone \n open at 10:00:AM(PDT)
UID:ev1
ORGANIZER;CN="ThisMeeting Orginizer":mailto:meetingorginer@example.com
Contact:meetingsupport@example.com
DTSTAMP:20111001T105433Z
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR