在我们的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的任何好文档。
任何帮助都会很棒!
谢谢, 费德里科
答案 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
编辑:更新了链接。