Crear eventos de día completo mediante EWS en ExchangeCreate all-day events by using EWS in Exchange

Obtenga información sobre cómo crear eventos de todo el día mediante la API administrada de EWS o EWS en Exchange.Learn how to create all-day events by using the EWS Managed API or EWS in Exchange.

Los eventos de todo el día proporcionan una forma de representar algo que ocurre en un solo día o en varios días (por ejemplo, un día festivo o días de vacaciones).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 creación de eventos de todo el día con la API administrada de EWS o EWS es un complemento.Creating all-day events with the EWS Managed API or EWS is a snap. Es igual que crear citas, pero con algunos pequeños cambios.It's just like creating appointments, but with a few small changes.

Establecer las horas de inicio y finalizaciónSetting start and end times

Por definición, los eventos de todos los días comienzan a medianoche en un día específico y finalizan 24 horas (o un múltiplo de 24 horas) más adelante.By definition, all-day events start at midnight on a specific day, and end 24 hours (or a multiple of 24 hours) later. Sin embargo, la API administrada de EWS y EWS le permiten especificar horas distintas de medianoche al crear eventos de día completo.However, the EWS Managed API and EWS allow you to specify times other than midnight when creating all day events. Esto puede llevar a un comportamiento imprevisto si no tiene constancia de cómo estas horas se traducen en el servidor.This can lead to unintended behavior if you're not aware of how these times get translated on the server.

Cuando se recibe una solicitud para crear un nuevo evento de día completo con una hora distinta de la medianoche (en la zona horaria de la solicitud o la cita), esas horas se ajustan a la medianoche en la zona horaria adecuada según las siguientes reglas: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:

  • Las horas de inicio que no sean de medianoche se ajustan a la medianoche antes de la hora especificada.Non-midnight start times are adjusted to the midnight prior to the time specified. Por ejemplo, 1:00 PM el 6 de junio se ajusta a 12:00 AM el 6 de junio.For example, 1:00 PM on June 6 gets adjusted to 12:00 AM on June 6.

  • Las horas de finalización que no sean de medianoche se ajustan a la medianoche después de la hora especificada.Non-midnight end times are adjusted to the midnight after the time specified. Por ejemplo, 1:00 PM el 6 de junio se ajusta a 12:00 AM el 7 de junio.For example, 1:00 PM on June 6 gets adjusted to 12:00 AM on June 7.

Por lo tanto, el evento de todo el día que se crea siempre está incluido en las horas de inicio y finalización especificadas, pero puede reclamar más tiempo en el calendario del usuario debido al cambio a medianoche.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. Como el servidor ajustará la hora de inicio y de finalización a medianoche, se recomienda especificar la hora de inicio y de finalización a medianoche para evitar cambios no deseados en las horas.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.

También es importante tener en cuenta las zonas horarias al crear eventos de día completo.It's also important to consider time zones when creating all-day events. Debido a que el servidor de Exchange aplica una hora de inicio y finalización de la medianoche en la zona horaria de la solicitud o cita, ver el evento de todo el día en un cliente configurado para una zona horaria diferente puede producir resultados inesperados.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. Según el cliente, es posible que aparezca como un evento de todo el día con días adicionales que no pretendía incluir, o puede que no aparezca como un evento de todo el día al mismo tiempo.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. Por este motivo, se recomienda usar la zona horaria preferida del usuario siempre que sea posible al crear eventos de todo el día.Because of this, we recommend that you use the user's preferred time zone whenever possible when you create all-day events.

Crear un evento de todo el día mediante la API administrada de EWSCreate an all-day event by using the EWS Managed API

En el ejemplo siguiente se muestra cómo usar la API administrada de EWS para crear un evento de todo el día, a partir de la fecha especificada por el parámetro startDate y que dura durante el número de días especificado por el parámetro 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. Tenga en cuenta que la cita se creará en la zona horaria especificada por la propiedad ExchangeService. TimeZone .Note that the appointment will be created in the time zone specified by the ExchangeService.TimeZone property. En este ejemplo se supone que el objeto ExchangeService pasado en el parámetro Service se ha inicializado con valores válidos para las credenciales y las propiedades de dirección 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);
    }
}

Crear un evento de todo el día mediante EWSCreate an all-day event by using EWS

En el ejemplo siguiente se muestra una solicitud de operación de EWS CreateItem para crear un evento de todo el día.The following example shows an EWS CreateItem operation request to create an all-day event. La cita se crea en la zona horaria oriental, como se indica en el elemento TimeZoneContext .The appointment is created in the Eastern time zone, as indicated by the TimeZoneContext element. Observe que la parte de hora de los valores de los elementos Start y End son tanto 04:00Z, que se convierte en la medianoche de la zona horaria Oriental durante el horario de verano.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>

Vea tambiénSee also