我有一些 DDay iCal 代码,它从我们的 SQL 数据库中获取事件并创建一个 iCal 文件,以便用户可以在 Outlook 或 Google 日历中订阅互联网日历。它工作正常,除非当不同时区的用户同步到他们的日历时,它会错误地显示时间。我们的网络服务器处于中央时间,因此东部时间的用户会将时间视为实际事件时间前 1 小时。基本上我希望 iCal 忽略时区,只显示我的数据库中出现的开始和结束时间。我有一种感觉,这将是不可能的,我们必须自己进行时间转换。
Dim iCal As iCalendar = New iCalendar()
Dim evt As [Event]
iCal.AddLocalTimeZone()
Dim dtStart As DateTime = dtr_SQL("StartDate").ToString()
Dim dtEnd As DateTime = dtr_SQL("EndDate").ToString()
Dim startDate As iCalDateTime = dtStart.ToUniversalTime()
Dim endDate As iCalDateTime = dtEnd.ToUniversalTime()
evt = iCal.Create(Of [Event])()
evt.Start = startDate
evt.Start.HasTime = True
evt.Start.IsUniversalTime = True
evt.End = endDate
evt.End.HasTime = True
evt.End.IsUniversalTime = True