0

我正在从我的 .net 应用程序(C#)发送一个请求,以在 Outlook 中创建定期会议邀请。会议邀请显示在夏令时(2015 年 3 月 8 日至 2015 年 11 月 1 日)休息一小时。

剩余时间,我的日历显示正确的时间,我将以下代码发送到 Outlook 日历。

请注意我使用 EST 的应用程序源和所有时区的目的地。

相同的代码。

BEGIN:VCALENDAR
PRODID:-//Schedule a Meeting
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150221T120000Z
DTEND:20150221T123000Z
LOCATION:XYZ, ABC
UID:0c5c9c55-851f-462b-bdf2-48df5991561b
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Test for UTC Time Zone
SUMMARY:Test for UTC Time Zone
ORGANIZER:MAILTO:myapplication@gmail.com
ATTENDEE;CN="";RSVP=TRUE:mailto:sender@gmail.com.com
RRULE:FREQ=Monthly;COUNT=4;BYDAY=3SA
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
4

1 回答 1

1

这就是问题:

DTSTART: starttime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z")
DTEND: Endtime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z")

您将开始和结束时间明确指定为 UTC,并且您从未指定时区。

如果您希望事件位于时区中,则应指定本地时间而不是 UTC 时间(因此最后没有 Z)和TZID指定时区的属性。我建议您将一些现有事件导出为 ical 条目,以查看它们的外观。

如果您希望它是一个“浮动时间”,您可以不使用任何时区来保留该值,无论本地时区是什么,它都会被解释。

于 2014-12-30T20:12:57.833 回答