去年秋天,我在调度应用程序中用 iCal.net 替换了 DDay iCal 组件。我们位于美国中部时区,我们数据库中的所有时间都是当地时间。
我们的大多数用户将 iCal.net 生成的 .ics 文件通过 URL 导入到他们的 Google 日历中,或者将文件手动导入到 Outlook 中。当 DST 在 3 月开始时,我们注意到导入 Outlook 2016 的文件减少了一小时。Google 日历会继续显示正确的时间。
这是我设置时区的代码:
MyCal.AddTimeZone(New VTimeZone("America/Chicago"))
包含一个事件的示例 .ics 文件如下所示:
BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Chicago
X-LIC-LOCATION:America/Chicago
END:VTIMEZONE
BEGIN:VEVENT
DESCRIPTION:Assigned Officials: \nAdmin User (222)222-2222\n85 First 85 La
st (222)222-2222\n\n\n\nNotes:\n \nHome: Team 1\nVisitor: Team 2
DTEND;TZID=America/Chicago:20180418T183000
DTSTAMP:20180413T025848Z
DTSTART;TZID=America/Chicago:20180418T173000
LOCATION:3401 Williston Rd\, Minnetonka\, Mn 55345
SEQUENCE:0
SUMMARY:PA at Mtka A
UID:d637e18e-7d73-414b-8820-c6696c096d99
END:VEVENT
END:VCALENDAR
该游戏将成功地在 Google 日历中显示为 17:30 开始,但如果将 .ics 文件导入 Outlook,它将显示 18:30 开始。