去年秋天,我在调度应用程序中用iCal.net替换了DDay iCal组件。我们位于美国中部时区,我们数据库中的所有时间都在当地时间。
我们的大多数用户都会使用iCal.net生成的.ics文件,并通过网址将其导入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
此游戏将在17:30开始时成功显示在Google日历中,但如果将.ics文件导入Outlook,则会在18:30开始显示。