Time Outlook是否正确处理.ics(ICalendar)文件的时区?

Time Outlook是否正确处理.ics(ICalendar)文件的时区?,time,outlook,icalendar,zones,Time,Outlook,Icalendar,Zones,我有一个向用户发送日历约会的程序。然而,这些用户在许多不同的时区。当我创建.ics文件时,我将时区设置为本地时区,因为它们被安排在这里。然后将它们发送给分散在多个时区的用户 outlook能否正确处理此问题?比如:如果我安排一个人参加上午8点的会议,而我在费城,那么他们在其他时区的会议应该是上午8点 我知道Outlook在一定程度上适用于时区,但我找不到任何关于它的好文档 编辑: 我真的应该问一些关于如何正确处理格式的问题,这是我目前使用的格式。但我在这方面经验不足,所以我可能做错了: Stri

我有一个向用户发送日历约会的程序。然而,这些用户在许多不同的时区。当我创建.ics文件时,我将时区设置为本地时区,因为它们被安排在这里。然后将它们发送给分散在多个时区的用户

outlook能否正确处理此问题?比如:如果我安排一个人参加上午8点的会议,而我在费城,那么他们在其他时区的会议应该是上午8点

我知道Outlook在一定程度上适用于时区,但我找不到任何关于它的好文档

编辑: 我真的应该问一些关于如何正确处理格式的问题,这是我目前使用的格式。但我在这方面经验不足,所以我可能做错了:

String[] iCalArr = {   "BEGIN:VCALENDAR",
                            "PRODID:-//foobar//morefoobar//EN",
                            "VERSION:2.0",
                            "CALSCALE:GREGORIAN",
                            "METHOD:REQUEST",
                            "BEGIN:VTIMEZONE",
                                "TZID:America/New_York",
                                "X-LIC-LOCATION:America/New_York",
                                "BEGIN:DAYLIGHT",
                                    "TZOFFSETFROM:-0500",
                                    "TZOFFSETTO:-0400",
                                    "TZNAME:EDT",
                                    "DTSTART:19700308T020000",
                                    "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU",
                                "END:DAYLIGHT",
                                "BEGIN:STANDARD",
                                    "TZOFFSETFROM:-0400",
                                    "TZOFFSETTO:-0500",
                                    "TZNAME:EST",
                                    "DTSTART:19701101T020000",
                                    "RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU",
                                "END:STANDARD",
                            "END:VTIMEZONE",
                            "BEGIN:VEVENT",
                                "DTSTART;TZID=America/New_York:" + strBeginDate, 
                                "DTEND;TZID=America/New_York:" + strEndDate, 
                                "DTSTAMP:" + strNow,
                                "UID:DT 2012 Training - " + System.Guid.NewGuid().ToString(),
                                "RECURRENCE-ID;TZID=America/New_York:20110207T103000",
                                "CREATED:" + strNow,
                                "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:foobar",
                                "LAST-MODIFIED:" + strNow,
                                "LOCATION:" + location, 
                                "SEQUENCE:1",
                                "STATUS:TENTATIVE",
                                  "SUMMARY:foobar",
                                "TRANSP:OPAQUE",
                              "END:VEVENT", "END:VCALENDAR" };

Outlook应该可以很好地处理这个问题,假设您的特定应用程序写出了正确的时区信息。或者perhpaps在UTC中工作,并用Z区域标记所有内容


你说“测试不是一种选择”,我对此感到困惑。我可以想象未知的“程序”无法写出测试数据,但您的问题表明您担心Outlook。当然你可以手工编辑一些不同时区的ICS文件,并将它们提供给Outlook?这应该清楚地表明Outlook知道如何处理这些问题。

是的,Outlook处理时区,KB中的这篇文章实际上指出了一个限制,即每次更改时区(DST…)时都需要更新Outlook:

很抱歉造成混淆,我的意思是简单地发送提醒以查看它们是否正常工作是我无法做到的,我可以通过将它们发送给自己并在发送后更改时区来进行测试,以查看它是否仍然显示为正确的时间。我确实这样做了,但是时间显示不正确,在费城安排的上午8点的约会根据时区的不同显示为不同的时间。我的目标是无论在哪个时区,它都保持在上午8点。你的描述让我有点困惑,但其实质是:时区处理是为了让约会在UTC的同一时间进行===在不同时区的所有不同时间。所以你可以跨时区安排一个电话会议等等。如果这是你想要的,但它不能做到,检查你的程序是否正在编写时区。如果导入的ICS不包含时区,Outlook可能会假定时间为本地时间。如果您不希望这样,请尝试让原始程序写出不带时区标记的文件。所以导入上午8:00的约会实际上会导致本地时间上午8:00,无论您在哪里导入它。好吧,在我的情况下,这不是我想要的。非常感谢你的帮助,我有点被我自己的解释弄糊涂了抱歉哈哈。