Création d’un rendez-vous qui commence dans le fuseau horaire Pacifique et se termine dans le fuseau horaire Est

Un rendez-vous peut parfois s’étendre sur une période de temps pendant laquelle l’utilisateur peut être amené à voyager et à changer de fuseau horaire par rapport à celui du début du rendez-vous. Cet exemple crée un rendez-vous qui commence dans le fuseau horaire Pacifique (UTC-8) et se termine dans le fuseau horaire Est (UTC-5).

Exemple

Cet exemple de code utilise l’objet TimeZones qui représente tous les fuseaux horaires reconnus dans Microsoft Windows. Il utilise également l’objet TimeZone pour définir ou obtenir la propriété StartTimeZone et la propriété EndTimeZone sur l’objet AppointmentItem .

Outlook affiche toutes les dates en heure locale, qui est exprimée dans le fuseau horaire actuel de l’utilisateur, lui-même contrôlé par les paramètres de l’utilisateur dans le Panneau de configuration. Outlook définit ou obtient également des propriétés, telles que Start et End, en heure locale. Toutefois, Outlook stocke les valeurs de date et heure au format UTC (Coordinated Universal Time) et non en heure locale. Si vous examinez la valeur interne de Appointment.Start à l’aide de l’objet PropertyAccessor , vous constaterez que la valeur de date et d’heure interne est égale à la valeur de date et d’heure locale convertie en valeur de date et d’heure UTC équivalente.

Outlook utilise les informations de fuseau horaire pour mapper le rendez-vous à l’heure UTC correcte lorsqu’il enregistre un rendez-vous et à l’heure locale actuelle lorsqu’il affiche l’élément dans le calendrier. La modification de StartTimeZone affecte la valeur de Appointment.Start, qui est toujours exprimée dans le fuseau horaire local, représentée par la propriété CurrentTimeZone de l’objet retourné par TimeZones. De la même manière, le fait de modifier EndTimeZone affecte la valeur d’Appointment.End, laquelle est toujours exprimée dans le fuseau horaire local, représenté par la propriété CurrentTimeZone de l’objet retourné par Application.TimeZones.

Vous pouvez récupérer un objet TimeZone spécifique à partir de l’objet TimeZones en utilisant la clé indépendante des paramètres régionaux pour TimeZone dans le Registre Windows. Les clés TimeZone indépendantes des paramètres régionaux sont répertoriées sous la clé suivante : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones.

Si vous utilisez Visual Studio pour tester cet exemple de code, vous devez d’abord ajouter une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 et spécifier la variable lorsque vous importez l’espace de noms Microsoft.Office.Interop.Outlook. L'instruction Importer ou utilisation ne doit pas se produire juste avant les fonctions de l'exemple de code, mais doit être ajoutée avant la déclaration publique. Les lignes de code suivantes montrent comment effectuer l’importation et l’affectation dans Visual Basic et dans C#.

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);
}

Voir aussi