Outlook没有正确导入带时区的VCS?

时间:2011-11-16 11:01:32

标签: asp.net outlook timezone icalendar vcalendar

在我们的ASP网络应用程序中,我们有一个模块可生成要导入日历的VCS文件。 如果客户与我们在同一区域(GMT),这种方法很好。

但是如果我创建一个在UTC-01上午9点开始的活动,我仍然会在UTC时间/格林威治标准时间上午9点开始活动,它就像是不能读取TZOFFSET

这是生成的VCS。在这个例子中,该事件应该发生在2011年12月30日上午9点至10点,UTC-05(纽约)。如果我将我的时区留作格林尼治标准时间,我可以在上午9点到10点之间预约,而不是计算时差。即使我改变我的时区,它也总是计算与GMT的差异,而不是事件发生的时区。

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-Microsoft
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
TZ:UTC-05
X-MICROSOFT-CDO-TZID:10
BEGIN:STANDARD
DTSTART:20111230T090000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART: 20111230T090000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20111116T100300Z
DTSTART;TZID=America/New_York:20111230T090000
SUMMARY;ENCODING=QUOTED-PRINTABLE:TEST
UID:12347a7833h
ORGANIZER;CN=Test:MAILTO:test@test.com
LOCATION;ENCODING=QUOTED-PRINTABLE:Hall A
DTEND;TZID=America/New_York:20111230T100000
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:
SEQUENCE:0
PRIORITY:5
TRANSP:OPAQUE
CATEGORIES:Test
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR

我已经在谷歌上搜索了好几天了,似乎无法找到关于如何正确生成VCS的任何好文档。

任何帮助都会很棒!

谢谢, 费德里科

2 个答案:

答案 0 :(得分:3)

以下是我提到的博文(不再可用)中的文字:

==========

问题在于:如果您在Google上搜索如何创建Outlook日历电子邮件通知/ ics文件,您可能会偶然发现此页面上有一个您可以使用的通用模板。或者您可以发送邀请并查看ICS文件的源代码。

无论哪种方式,您都会在VTIMEZONE块中看到以下行:

TZID:(GMT-05.00) Eastern Time (US & Canada)
X-MICROSOFT-CDO-TZID:10

注意奇怪的X-MICROSOFT-CDO-TZID线...它只是一个数字,“10”。嗯,据微软称,10号代表美国的东部时区。搜索Google时,您可能会看到更多这种奇怪的数字/位置映射示例,但您很难找到所有映射的完整列表。 11是中部时间,12是山地时间,13是太平洋时间,但38是亚利桑那州的山地时间......?

经过大量研究(以及致MSFT员工的电话)后,我们在MSDN网站上发现了此文档:http://msdn.microsoft.com/en-us/library/aa563018(loband).aspx

它记录了您需要使用的所有时区“数字”才能正确设置ICS文件。

==========

干杯!

答案 1 :(得分:-1)

我确信OP已经解决了这个问题,但这里有一篇很棒的博客文章,讨论微软用于帮助Outlook中的时区解释的专有“X-MICROSOFT-CDO-TZID”标签:http://hello-dot-wordpress.blogspot.com/2009/10/my-guide-to-x-microsoft-cdo-tzid.html

编辑:更新了链接。