2016-03-25 8 views
1

Ich habe einige DDay iCal-Code, der Ereignisse aus unserer SQL-Datenbank und erstellt eine iCal-Datei, so dass Benutzer den Internet-Kalender in Outlook oder Google Kalender abonnieren können. Es funktioniert einwandfrei, außer wenn ein Benutzer in einer anderen Zeitzone mit seinem Kalender synchronisiert, zeigt er die Uhrzeit falsch an. Unser Webserver befindet sich in einer zentralen Zeit, so dass ein Benutzer in der östlichen Zeit die Zeit als 1 Stunde vor der tatsächlichen Ereigniszeit sehen würde. Grundsätzlich möchte ich, dass iCal Zeitzonen ignoriert und nur die Start- und Endzeit anzeigt, wie sie in meiner Datenbank erscheint. Ich habe das Gefühl, das wird unmöglich sein und wir müssen die Zeitumwandlung selbst machen.DDay iCal ändern Zeit in 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 

Antwort

0

Da Sie die Zeit von einer SQL-Datenbank erhalten, ist es unwahrscheinlich, dass eine Zeitzone mit der Zeit verbunden ist, die Sie ziehen. Sie werden wahrscheinlich die Zeit zuweisen müssen Sie zu „Central Standard Time“ ziehen, wie hier gezeigt:

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) 

Nun, wenn ein Benutzer in Eastern Standard Time Code ausgeführt wird, wird die Zeit von der Datenbank gelesen werden als CST (nicht EST, wo wahrscheinlich Ihr Problem herkommt) und dann in UTC konvertiert. Mit einer klaren Zeitzone in Verbindung mit diesen Zeiten sollten Outlook und Google den Rest erledigen können, wenn Ihre Kalendertermine von Benutzern in verschiedenen Zeitzonen gelesen werden.

Ich hoffe, das hilft!

+0

Dies funktioniert jedoch nicht. Ich ändere meinen Computer auf Eastern Standard Time, synchronisiere den Internetkalender mit Outlook, und wenn ich den Code ausführe, stößt er immer noch eine Stunde in Outlook an. Ich habe versucht, die Zeitzonen einzustellen und es funktioniert nie. – GS442

+0

Ich habe möglicherweise missverstanden - führen Benutzer Code aus, den Sie geschrieben haben, oder greifen sie direkt von einem Outlook-Termin (oder Google Kalender-Termin) zu, der bereits von Ihrem Code verarbeitet wurde? – Dustin

+0

Dies ist ein Live-iCal-Feed, der mit Outlook oder Google Kalender synchronisiert wird. Wenn Benutzer den Internetkalender in Outlook abonnieren, wird die Seite alle 5 Minuten abgefragt, um mögliche Änderungen zu erhalten. – GS442

Verwandte Themen