Share via


Erstellen eines Termins mit Startzeit in der Pacific Time-Zone und Endzeit in der Eastern Time-Zone

Gelegentlich kann ein Termin einen Zeitraum überspannen, in dem der Benutzer möglicherweise in eine andere Zeitzone gereist ist, als in der er sich bei Beginn des Termins befand. In diesem Beispiel wird ein Termin erstellt, der in der Pacific Time-Zone (UTC-8) beginnt und in der Eastern Time-Zone (UTC-5) endet.

Beispiel

In diesem Codebeispiel wird das TimeZones-Objekt verwendet, das alle in Microsoft Windows erkannten Zeitzonen darstellt. Außerdem wird das TimeZone-Objekt verwendet, um die StartTimeZone-Eigenschaft und die EndTimeZone-Eigenschaft für das AppointmentItem-Objekt festzulegen oder abzurufen.

Outlook zeigt alle Datumsangaben in ortszeit an, die in der aktuellen Zeitzone des Benutzers ausgedrückt werden und durch die Einstellungen des Benutzers im Windows-Systemsteuerung gesteuert werden. Outlook legt auch Eigenschaften wie Start und Ende in der Ortszeit fest oder ruft sie ab. Outlook speichert jedoch Datums- und Uhrzeitwerte als koordinierte Weltzeit (Coordinated Universal Time, UTC) und nicht als Ortszeit. Wenn Sie den internen Wert von Appointment.Start mithilfe des PropertyAccessor-Objekts untersuchen, würden Sie feststellen, dass der interne Datums- und Uhrzeitwert gleich dem lokalen Datums- und Uhrzeitwert ist, der in den entsprechenden UTC-Datums- und Uhrzeitwert konvertiert wurde.

In Outlook werden Zeitzoneninformationen verwendet, um einen Termin beim Speichern zur richtigen UTC-Zeit und beim Anzeigen des Elements im Kalender zur richtigen lokalen Zeit zuzuordnen. Das Ändern von StartTimeZone wirkt sich auf den Wert von Appointment.Start aus, der immer in der lokalen Zeitzone ausgedrückt wird, dargestellt durch die CurrentTimeZone-Eigenschaft des von TimeZones zurückgegebenen Objekts. Ebenso wirkt sich eine Änderung von EndTimeZoneauf den Wert von Appointment.End aus, der immer in der lokalen Zeit ausgedrückt wird, dargestellt durch die CurrentTimeZone-Eigenschaft des von Application.TimeZones zurückgegebenen Objekts.

Sie können eine bestimmte TimeZone aus dem TimeZones-Objekt abrufen, indem Sie den gebietsschemaunabhängigen Schlüssel für die TimeZone in der Windows-Registrierung verwenden. Gebietsschemaunabhängige TimeZone-Schlüssel werden unter dem folgenden Schlüssel aufgeführt: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones.

Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.

Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub TimeZoneExample()
    Dim appt As Outlook.AppointmentItem = _
        CType(Application.CreateItem( _
        Outlook.OlItemType.olAppointmentItem), Outlook.AppointmentItem)
    Dim tzs As Outlook.TimeZones = Application.TimeZones
    ' Obtain timezone using indexer and locale-independent key
    Dim tzEastern As Outlook.TimeZone = tzs("Eastern Standard Time")
    Dim tzPacific As Outlook.TimeZone = tzs("Pacific Standard Time")
    appt.Subject = "SEA - JFK Flight"
    appt.Start = DateTime.Parse("8/9/2006 8:00 AM")
    appt.StartTimeZone = tzPacific
    appt.End = DateTime.Parse("8/9/2006 5:30 PM")
    appt.EndTimeZone = tzEastern
    appt.Display(False)
End Sub
private void TimeZoneExample()
{
    Outlook.AppointmentItem appt = Application.CreateItem(
        Outlook.OlItemType.olAppointmentItem)
        as Outlook.AppointmentItem;
    Outlook.TimeZones tzs = Application.TimeZones;
    // Obtain timezone using indexer and locale-independent key
    Outlook.TimeZone tzEastern = tzs["Eastern Standard Time"];
    Outlook.TimeZone tzPacific = tzs["Pacific Standard Time"];
    appt.Subject = "SEA - JFK Flight";
    appt.Start = DateTime.Parse("8/9/2006 8:00 AM");
    appt.StartTimeZone = tzPacific;
    appt.End = DateTime.Parse("8/9/2006 5:30 PM");
    appt.EndTimeZone = tzEastern; 
    appt.Display(false);
}

Siehe auch