DDay iCal меняет время в Outlook 2010
У меня есть некоторый код DDay iCal, который берет события из нашей базы данных SQL и создает файл iCal, чтобы пользователи могли подписаться на интернет-календарь в Outlook или Google Calendar. Работает нормально, за исключением случаев, когда пользователь в другом часовом поясе синхронизируется со своим календарем и неправильно отображает время. Наш веб-сервер находится в центральном времени, поэтому пользователь в восточном времени будет видеть время за 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
1 ответ
Поскольку вы получаете время из базы данных SQL, маловероятно, что есть часовой пояс, связанный с временем, которое вы тянете. Скорее всего, вам нужно будет присвоить время, которое вы тянете, "Центральному стандартному времени", как показано здесь:
Dim centralTime As New Date(dtStart) 'using the datetime you pulled from your database
Dim centralZoneId As String = "Central Standard Time"
Dim centralZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(centralZoneId)
Dim UTCTime as Date = TimeZoneInfo.ConvertTimeToUtc(centralTime, centralZone)
Теперь, если пользователь в восточном стандартном времени выполняет ваш код, время будет считываться из базы данных как CST (а не EST, что, вероятно, является причиной вашей проблемы), а затем преобразовываться в UTC. Благодаря четкому часовому поясу, связанному с этим временем, Outlook и Google должны иметь возможность обрабатывать все остальное, когда встречи в календаре читаются пользователями в разных часовых поясах.
Надеюсь, это поможет!