1

在我们的 ASP 网络应用程序中,我们有一个模块可以生成要导入到您的日历中的 VCS 文件。如果客户端与我们位于同一区域 (GMT),则此方法可以正常工作。

但是,例如,如果我创建一个在 UTC-01 上午 9 点开始的事件,我仍然会将该事件从 UTC/GMT 上午 9 点开始,就好像它不会读取 TZOFFSET

这是生成的 VCS。在此示例中,该事件应于 2011 年 12 月 30 日上午 9 点至上午 10 点在 UTC-05(纽约)举行。如果我将我的时区设置为 GMT,我会在上午 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 的好文档。

任何帮助都会很棒!

谢谢,费德里科

4

2 回答 2

2

这是我提到的博客文章中的文字(不再可用):

==========

这就是问题所在:如果您在 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 文件所需使用的所有时区“数字”。

==========

干杯!

于 2014-01-20T22:29:17.007 回答
-1

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

编辑:更新链接。

于 2012-09-07T14:35:42.303 回答