Zeitzonen und EWS in Exchange

Erfahren Sie, wie Zeitzonen mit der verwalteten EWS-API und EWS in Exchange funktionieren.

Zeitzonen sind nicht etwas, das die meisten Menschen sehr bedenken. Sie sind jedoch ein wichtiges Konzept bei der Angabe von Datums- und Uhrzeitangaben mithilfe der verwalteten EWS-API oder EWS. Eine falsche Behandlung von Zeitzonen in einer verwalteten EWS-API oder EWS-Anwendung kann zu unerwarteten Ergebnissen führen. Die ordnungsgemäße Handhabung von Zeitzonen ist einfach, solange Sie wissen, wie.

Behandeln von Zeitzonen in der verwalteten EWS-API

Wenn Sie die verwaltete EWS-API verwenden, werden Zeitzonen größtenteils automatisch für Sie behandelt. Ohne explizite Aktion Ihrerseits verwendet die API die lokale Zeitzone des Clientcomputers und verarbeitet alle erforderlichen Konvertierungen im Hintergrund. Dies ist ideal, wenn dies der gewünschte Effekt ist, aber Sie haben weitere Optionen.

Eine Option ist das Festlegen der Eigenschaft ExchangeService.TimeZone. Diese Eigenschaft steuert die Zeitzone für alle Anforderungen, die von der verwalteten EWS-API ausgeführt werden. Diese Eigenschaft ist schreibgeschützt. Die einzige Möglichkeit, dies festzulegen, ist über den Klassenkonstruktor. Wenn Sie entweder den Konstruktor ExchangeService(System.TimeZoneInfo) oder ExchangeService(ExchangeVersion, System.TimeZoneInfo) verwenden, können Sie eine bestimmte Zeitzone als System.TimeZoneInfo-Objekt angeben. Wenn Sie einen der anderen Konstruktoren verwenden, die kein TimeZoneInfo-Objekt als Parameter verwenden, legt die Klasse ExchangeServicedie Eigenschaft TimeZone auf die aktuelle Zeitzone des Clientcomputers fest.

Unabhängig davon, ob Sie eine bestimmte Zeitzone festlegen oder als Zeitzone des Clientcomputers belassen, werden alle Datums- und Uhrzeitangaben in der Zeitzone ausgedrückt, die durch die Eigenschaft TimeZone dargestellt wird. Die verwaltete EWS-API macht alle Datums-/Uhrzeiteigenschaften als System.DateTime-Strukturen verfügbar. Wenn Sie also Datums-/Uhrzeiteigenschaften festlegen, beachten Sie, dass die angegebene Uhrzeit entsprechend dem Eigenschaftswert DateTime.Kind für das DateTime-Objekt interpretiert wird. Wenn der Wert der Eigenschaft Kind auf Unspecified festgelegt ist, wird der Wert von DateTime als in der Zeitzone interpretiert, die durch die Eigenschaft TimeZone angegeben wird. Wenn Sie Datums-/Uhrzeiteigenschaften lesen, werden alle DateTime-Eigenschaften in dieser Zeitzone ausgedrückt.

Wenn Sie neue Termine oder Besprechungen erstellen oder vorhandene Termine oder Besprechungen aktualisieren, können Sie die Zeitzone überschreiben, die in TimeZone für neue Appointment-Objekte angegeben ist. Was Sie jedoch überschreiben können, hängt von der EWS-Schemaversion ab, auf die Sie abzielen. Für alle Werte der Eigenschaft ExchangeService.RequestedServerVersion können Sie die Appointment.StartTimeZone so festlegen, dass eine bestimmte Zeitzone für diesen Termin oder diese Besprechung verwendet wird. Wenn Sie einen Wert für die Eigenschaft ExchangeService.RequestedServerVersion verwenden, der größer als Exchange2007_SP1 ist, können Sie auch die Eigenschaft Appointment.EndTimeZone festlegen, sodass Sie eine Zeitzone für die Eigenschaft Appointment.End angeben können. Beachten Sie jedoch, dass sich diese Eigenschaften nur auf die Interpretation des Datums/der Uhrzeit für die Erstellungsanforderung auswirken. Wenn Sie den Termin abrufen, werden die Anfangs- und Endzeiten weiterhin in der Zeitzone ausgedrückt, die durch die Eigenschaft TimeZone angegeben wird.

Wenn Sie vorhandene Termine oder Besprechungen aktualisieren, können Sie die Zeitzone für ein Appointment-Objekt ändern, indem Sie die Eigenschaft StartTimeZone und/oder die Eigenschaft EndTimeZone festlegen. Dadurch werden die entsprechenden Zeiten entsprechend verschoben. Wenn Sie ExchangeService.RequestedServerVersion auf Exchange2007_SP1 festgelegt haben, können Sie die Eigenschaft EndTimeZone nicht festlegen. Der Wert der Eigenschaft StartTimeZone wird an ihrer Stelle verwendet.

Tabelle 1. Zeitzoneneigenschaften in der verwalteten EWS-API

Zeitzoneneigenschaft Mindestversion der Serveranforderung Beschreibung
TimeZone
Exchange2007_SP1
Wenn sie nicht über den Konstruktor für die ExchangeService-Klasse festgelegt wird, wird diese Eigenschaft auf die Zeitzone des Clientcomputers festgelegt. Alle DateTime-Eigenschaften beim Erstellen von Elementen und beim Abrufen vorhandener Elemente werden in dieser Zeitzone ausgedrückt. Diese Zeitzone kann beim Erstellen von Anforderungen für Termine und Besprechungen überschrieben werden, indem die Eigenschaft Appointment.StartTimeZone und/oder Appointment.EndTimeZone festgelegt wird. Wenn diese Zeitzone nicht von der Eigenschaft Appointment.StartTimeZone überschrieben wird, wird sie als Erstellungszeitzone für Termine und Besprechungen betrachtet.
StartTimeZone
Exchange2007_SP1
Wenn diese Zeitzone für neue Appointment-Objekte festgelegt ist, wird diese Zeitzone verwendet, um die Eigenschaften Appointment.Start und Appointment.ReminderDueBy zu interpretieren. Diese Zeitzone wird auch als Erstellungszeitzone für das Appointment-Objekt betrachtet.
Beim Abrufen vorhandener Elemente ist diese Eigenschaft nur informativ. Die Werte der DateTime-Eigenschaften für einen vorhandenen Termin werden immer in der Zeitzone ausgedrückt, die von der Eigenschaft ExchangeService.TimeZone angegeben wird.
EndTimeZone
Exchange2010
Wenn für neue Appointment-Objekte festgelegt, wird diese Zeitzone verwendet, um die Eigenschaft Appointment.End zu interpretieren.
Beim Abrufen vorhandener Elemente ist diese Eigenschaft nur informativ. Die Werte der DateTime-Eigenschaften für einen vorhandenen Termin werden immer in der Zeitzone ausgedrückt, die von der Eigenschaft ExchangeService.TimeZone angegeben wird.

Behandeln von Zeitzonen in EWS

Wenn Sie EWS verwenden, werden Zeitzonen nicht automatisch für Sie behandelt, und die Dinge sind etwas komplizierter. Wie sich Zeitzonen auf EWS-Anforderungen und -Antworten auswirken, hängt von einer Reihe von Faktoren ab:

Die im Wert von Elementen dateTime angegebene Zeitzone kann drei Formen annehmen. Sie können alle Details in XML Schema Part 2: Datatypes Second Edition lesen, aber in Paraphrase:

  • Koordinierte Weltzeit (UTC): Angegeben durch "Z". Beispiel: 2014-06-06T19:00:00.000Z

  • Spezifische Zeitzone: Angegeben durch "+" oder "-", gefolgt von Stunden und Minuten. Beispiel: 2014-06-06T19:00:00.000-08:00

  • Keine Zeitzone: Angegeben durch das Fehlen einer Zeitzone. Beispiel: 2014-06-06T19:00:00.000

Wenn eine Zeitzone in einem dateTime-Wert vorhanden ist (entweder UTC oder eine bestimmte Zeitzone), wird dieser Wert immer als diese Zeitzone interpretiert. Wenn keine Zeitzone vorhanden ist, hängt die Interpretation des Werts von der spezifischen Kombination der anderen zeitzonenbezogenen Elemente ab.

Tabelle 2. Zeitzonenelemente in EWS und ihre Auswirkungen

RequestServerVersion TimeZoneContext vorhanden? MeetingTimeZone, StartTimeZone oder EndTimeZone vorhanden (nur CalendarItem und MeetingRequest)? dateTime in UTC dateTime in einer bestimmten Zeitzone dateTime ohne Zeitzone Zeitzone für die Erstellung von Terminen und Besprechungen
Exchange2007_SP1
Ja
Ja (MeetingTimeZone)
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Elemente innerhalb des Elements CalendarItem oder MeetingRequest, das das Element MeetingTimeZone enthält, werden als Zeitzone im Element MeetingTimeZone interpretiert, alle anderen als UTC interpretiert.
Zeitzone im Element MeetingTimeZone
Exchange2007_SP1
Ja
Nein
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Interpretiert als UTC
UTC
Exchange2007_SP1
Nein
Ja (MeetingTimeZone)
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Elemente innerhalb des Elements CalendarItem oder MeetingRequest, das das Element MeetingTimeZone enthält, werden als Zeitzone im Element MeetingTimeZone interpretiert, alle anderen als UTC interpretiert.
Zeitzone im Element MeetingTimeZone
Exchange2007_SP1
Nein
Nein
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Interpretiert als UTC
UTC
Exchange2010 und höher
Ja
Ja (StartTimeZone und/oder EndTimeZone)
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Wenn das Element StartTimeZone vorhanden ist, wird der Wert der Elemente Start und ReminderDueBy Elemente als Zeitzone im Element StartTimeZone interpretiert. Andernfalls wird der Wert dieser Elemente als Zeitzone im Element TimeZoneContext interpretiert.
Wenn das Element EndTimeZone vorhanden ist, wird der Wert des Elements Start als Zeitzone im Element EndTimeZone interpretiert. Andernfalls wird der Wert des Elements End als Zeitzone im Element TimeZoneContext interpretiert.
Elemente außerhalb des Elements CalendarItem oder MeetingRequest werden als Zeitzone im Element TimeZoneContext interpretiert.
Zeitzone im Element StartTimeZone, falls vorhanden, Zeitzone im Element TimeZoneContext, falls nicht vorhanden
Exchange2010 und höher
Ja
Nein
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Interpretiert als Zeitzone im Element TimeZoneContext
Zeitzone im Element TimeZoneContext
Exchange2010 und höher
Nein
Ja (StartTimeZone und/oder EndTimeZone)
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Wenn das Element StartTimeZone vorhanden ist, wird der Wert der Elemente Start und ReminderDueBy Elemente als Zeitzone im Element StartTimeZone interpretiert. Andernfalls wird der Wert dieser Elemente als UTC interpretiert.
Wenn das Element EndTimeZone vorhanden ist, wird der Wert des Elements Start als Zeitzone im Element EndTimeZone interpretiert. Andernfalls wird der Wert des Elements End als UTC interpretiert.
Elemente außerhalb des Elements CalendarItem oder MeetingRequest werden als UTC interpretiert.
Zeitzone im Element StartTimeZone, falls vorhanden, UTC, falls nicht vorhanden
Exchange2010 und höher
Nein
Nein
Interpretiert als UTC
Interpretiert als im Wert angegebene Zeitzone
Interpretiert als UTC
UTC

Beim Interpretieren von Antworten vom Server sollten Sie immer den Wert jedes Elements überprüfen und den Wert entsprechend interpretieren. Exchange enthält immer eine Zeitzone (entweder UTC oder eine bestimmte Zeitzone) im Wert.

Zusätzliche Überlegungen zur Zeitzone beim Erstellen von Terminen und Besprechungen

Wenn Sie einen Termin oder eine Besprechung erstellen, wird die Zeitzone, die für die Startzeit gilt, als Erstellungszeitzone für den Termin betrachtet. Neben der Steuerung, wie Datum/Uhrzeiten interpretiert werden, wenn ein Termin oder eine Besprechung erstellt wird, hat die Erstellungszeitzone die folgenden Auswirkungen auf das Element:

  • Wenn es sich bei dem Element um ein ganztägiges Ereignis handelt, wird es möglicherweise unerwartet angezeigt, wenn es von einem Client aus angezeigt wird, der eine andere Zeitzone als die Erstellungszeitzone verwendet. Dies liegt daran, dass beim Erstellen eines ganztägigen Ereignisses die Start- und Endzeit von ganztägigen Ereignissen an Mitternacht der Erstellungszeitzone angepasst wird. Diese Zeit wird als eine andere Zeit als Mitternacht in einer anderen Zeitzone angezeigt, sodass das Element möglicherweise zusätzliche Tage umfasst. Aus diesem Grund wird empfohlen, die Zeitzone zu verwenden, die für den primären Kalenderclient des Benutzers konfiguriert ist, um nach Möglichkeit ganztägige Ereignisse zu erstellen.

  • Wenn es sich bei dem Element um eine Besprechung handelt, wird die Zeitzone für die Erstellung in der Outlook-Infoleiste für die Besprechungsanfragen angezeigt, die von den Teilnehmern empfangen werden, wenn diese Zeitzone von der Zeitzone ihres Clients abweicht.

Inhalt dieses Abschnitts

Siehe auch