2016-03-25 2 views
1

У меня есть код DDay iCal, который принимает события из нашей базы данных SQL и создает файл iCal, чтобы пользователи могли подписаться на интернет-календарь в Outlook или Google Calendar. Он работает отлично, за исключением случаев, когда пользователь в другом часовом поясе синхронизируется с календарем, он отображает время неправильно. Наш веб-сервер находится в центральное время, поэтому пользователь в восточное время будет видеть время за 1 час до фактического времени события. В основном я хочу, чтобы iCal игнорировал часовые пояса и просто показывал время начала и окончания, как оно появляется в моей базе данных. У меня такое чувство, что это будет невозможно, и нам придется самому преобразовать время.Время изменения DDay iCal в Outlook 2010

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 

ответ

0

Поскольку вы получаете время от базы данных 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 должны иметь возможность обрабатывать остальные, когда ваши календарные встречи читаются пользователями в разных часовых поясах.

Надеюсь, это поможет!

+0

Это не работает. Я меняю свой компьютер на «Восточное стандартное время», синхронизирую интернет-календарь с Outlook, и когда я запускаю код, он все еще наталкивает время в течение часа внутри Outlook. Я пробовал устанавливать часовые пояса, и он никогда не работает. – GS442

+0

Возможно, я неправильно понял - пользователи выполняют какой-либо код, который вы написали, или они получают доступ непосредственно из встречи Outlook (или назначения Календаря Google), которая уже обработана вашим кодом? – Dustin

+0

Это предназначено для живой передачи iCal, которая синхронизируется с Outlook или Google Calendar. Когда пользователи подписываются на Интернет-календарь в Outlook, он просматривает страницу каждые 5 минут, чтобы получить возможные изменения. – GS442