Créer des événements sur une journée entière à l'aide d’EWS dans ExchangeCreate all-day events by using EWS in Exchange

Découvrez comment créer des événements sur une journée entière à l’aide de l’API managée EWS ou d’EWS dans Exchange.Learn how to create all-day events by using the EWS Managed API or EWS in Exchange.

Les événements d’une journée entière permettent de représenter un événement qui se produit pendant une journée ou plusieurs jours, par exemple, un congé ou des jours de congés.All-day events provide a way to represent something that happens for an entire day or multiple days—for example, a holiday, or vacation days. La création d’événements d’une journée entière avec l’API managée EWS ou EWS est un Snap.Creating all-day events with the EWS Managed API or EWS is a snap. Cela revient à créer des rendez-vous, mais avec quelques petites modifications.It's just like creating appointments, but with a few small changes.

Définition des heures de début et de finSetting start and end times

Par définition, les événements d’une journée entière commencent à minuit un jour donné et se terminent 24 heures (ou un multiple de 24 heures) plus tard.By definition, all-day events start at midnight on a specific day, and end 24 hours (or a multiple of 24 hours) later. Toutefois, l’API managée EWS et EWS vous permettent de spécifier des heures autres que minuit lors de la création d’événements d’une journée entière.However, the EWS Managed API and EWS allow you to specify times other than midnight when creating all day events. Cela peut entraîner un comportement involontaire si vous ne savez pas comment ces heures sont traduites sur le serveur.This can lead to unintended behavior if you're not aware of how these times get translated on the server.

Lors de la réception d’une demande de création d’un événement d’une journée entière avec une date de début et/ou de fin non minuit (dans le fuseau horaire de la demande ou du rendez-vous), les heures sont ajustées à minuit dans le fuseau horaire approprié en fonction des règles suivantes :When a request is received to create a new all-day event with non-midnight (in the time zone of the request or appointment) start and/or end times, those times get adjusted to midnight in the appropriate time zone according to the following rules:

  • Les heures de début non minuit sont ajustées à minuit avant l’heure spécifiée.Non-midnight start times are adjusted to the midnight prior to the time specified. Par exemple, 1:00 PM le 6 juin est ajusté à 12:00 AM le 6 juin.For example, 1:00 PM on June 6 gets adjusted to 12:00 AM on June 6.

  • Les heures de fin non minuit sont ajustées à minuit après l’heure spécifiée.Non-midnight end times are adjusted to the midnight after the time specified. Par exemple, 1:00 PM le 6 juin est ajusté à 12:00 AM le 7 juin.For example, 1:00 PM on June 6 gets adjusted to 12:00 AM on June 7.

Par conséquent, l’événement d’une journée entière que vous créez est toujours inclus dans l’heure de début et de fin que vous spécifiez, mais peut réclamer du temps supplémentaire sur le calendrier de l’utilisateur en raison du changement de minuit.So the all-day event that you create is always inclusive of the start and end time that you specify, but might claim additional time on the user's calendar due to the shift to midnight. Étant donné que le serveur ajustera les heures de début et de fin à minuit, nous vous recommandons de spécifier votre heure de début et de fin à minuit afin d’éviter toute modification involontaire de ces heures.Because the server will adjust the start and end time to midnight, we recommend that you specify your start and end time at midnight to avoid any unintended changes to the times.

Il est également important de prendre en compte les fuseaux horaires lors de la création d’événements sur une journée entière.It's also important to consider time zones when creating all-day events. Étant donné que le serveur Exchange applique une heure de début et de fin de minuit dans le fuseau horaire de la demande ou du rendez-vous, l’affichage de l’événement d’une journée entière dans un client configuré pour un fuseau horaire différent peut produire des résultats inattendus.Because the Exchange server enforces a midnight start and end time in the time zone of the request or appointment, viewing that all-day event in a client configured for a different time zone can yield unexpected results. Selon le client, il peut apparaître comme un événement d’une journée entière avec des jours supplémentaires que vous n’avez pas prévu d’inclure, ou il peut ne pas apparaître comme un événement d’une journée entière.Depending on the client, it might appear as an all-day event with extra days that you did not intend to include, or it might not appear as an all-day event altogether. Pour cette raison, nous vous recommandons d’utiliser le fuseau horaire préféré de l’utilisateur chaque fois que cela est possible lorsque vous créez des événements sur une journée entière.Because of this, we recommend that you use the user's preferred time zone whenever possible when you create all-day events.

Créer un événement d’une journée entière à l’aide de l’API managée EWSCreate an all-day event by using the EWS Managed API

L’exemple suivant montre comment utiliser l’API managée EWS pour créer un événement d’une journée entière, en commençant à la date spécifiée par le paramètre StartDate et en fonction du nombre de jours spécifié par le paramètre numDays .The following example shows how to use the EWS Managed API to create an all-day event, starting on the date specified by the startDate parameter and lasting for the number of days specified by the numDays parameter. Notez que le rendez-vous sera créé dans le fuseau horaire spécifié par la propriété ExchangeService. TimeZone .Note that the appointment will be created in the time zone specified by the ExchangeService.TimeZone property. Cet exemple part du principe que l’objet ExchangeService transmis dans le paramètre service a été initialisé avec des valeurs valides pour les informations d’identification et les propriétés de l' URL .This example assumes that the ExchangeService object passed in the service parameter has been initialized with valid values for the Credentials and Url properties.

static void CreateAllDayAppointment(ExchangeService service, DateTime startDate, int numDays)
{
    // Best practice is to set the start date to midnight
    // on the first day of the all-day event.
    DateTime startDateMidnight = startDate.Date;
    // The end date should be midnight on the first day
    // after the event.
    DateTime endDateMidnight = startDateMidnight.AddDays(numDays);
    Appointment allDayEvent = new Appointment(service);
    // Set IsAllDayEvent to true.
    allDayEvent.IsAllDayEvent = true;
    // Set other properties.
    allDayEvent.Subject = "Vacation";
    allDayEvent.LegacyFreeBusyStatus = LegacyFreeBusyStatus.OOF;
    allDayEvent.Start = startDateMidnight;
    allDayEvent.End = endDateMidnight;
    // Save the appointment.
    try
    {
        allDayEvent.Save(WellKnownFolderName.Calendar, SendInvitationsMode.SendToNone);
        Console.WriteLine("All day event created.");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error saving all day event: {0}", ex.Message);
    }
}

Créer un événement d’une journée entière à l’aide d’EWSCreate an all-day event by using EWS

L’exemple suivant montre une demande d' opération CREATEITEM EWS pour créer un événement sur une journée entière.The following example shows an EWS CreateItem operation request to create an all-day event. Le rendez-vous est créé dans le fuseau horaire est, comme indiqué par l’élément TimeZoneContext .The appointment is created in the Eastern time zone, as indicated by the TimeZoneContext element. Notez que la partie heure des valeurs des éléments de début et de fin est comprise entre 04:00Z, qui est convertie en minuit dans le fuseau horaire est lors de l’heure d’été.Notice that the time portion of the values of the Start and End elements are both 04:00Z, which converts to midnight in the Eastern time zone during daylight saving time.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
    xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types" 
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Eastern Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:CreateItem SendMeetingInvitations="SendToNone">
      <m:SavedItemFolderId>
        <t:DistinguishedFolderId Id="calendar" />
      </m:SavedItemFolderId>
      <m:Items>
        <t:CalendarItem>
          <t:Subject>Vacation</t:Subject>
          <t:Start>2014-06-09T04:00:00.000Z</t:Start>
          <t:End>2014-06-10T04:00:00.000Z</t:End>
          <t:IsAllDayEvent>true</t:IsAllDayEvent>
          <t:LegacyFreeBusyStatus>OOF</t:LegacyFreeBusyStatus>
        </t:CalendarItem>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

Voir aussiSee also