Outlook 2010显示时间提前一小时

时间:2014-04-19 16:09:35

标签: c# outlook timezone icalendar

我创建了以下" .ics"文件。当我在谷歌和iCal中打开它时,它会显示正确的时间,但是当我在Outlook 2010中打开时,它会提前一小时显示时间。有什么帮助吗?

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//www.marudot.com//iCal Event Maker
X-WR-TIMEZONE:America/Los_Angeles
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20140510T110000
DTEND;TZID=America/Los_Angeles:20140510T111500
SUMMARY:Appointment-11:00 AM-PST
DESCRIPTION:Appointment-11:00 AM-PST
LOCATION:Location: TBD
END:VEVENT
END:VCALENDAR

2 个答案:

答案 0 :(得分:2)

使用带有时区的本地时间时,将TZID添加到所有与日期相关的属性是不够的。这是因为没有所有客户都能理解的TZID全局注册表。因此,必须在iCalendar流中包含与此TIZD对应的时区定义。

换句话说,您的信息流不符合iCalendar标准。在事件发生之前(在BEGIN:VEVENT之前),您应该有一个与TZID America / Los_Angeles相对应的正确的VTIMEZONE定义。见https://tools.ietf.org/html/rfc5545#section-3.8.3.1

在你的情况下,它会是这样的:

BEGIN:VTIMEZONE
TZID:America/Los_Angeles
TZURL:http://tzurl.org/zoneinfo/America/Los_Angeles
X-LIC-LOCATION:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE

答案 1 :(得分:0)

我不认为“TZID = America / Los_Angeles”是Outlook所理解的时区。尝试在Outlook中创建约会并将其另存为ICS文件。 TZ使用什么TZ?