sincronizar icalshare ical google con calendars calendario calendar icalendar

calendar - icalshare - Citas de un día durante todo el día en archivos.ics



icalshare com calendars (6)

Estoy creando un archivo ics utilizando ASP.NET para importar vacaciones en Outlook 2007 y tratando de establecer el indicador de evento de todo el día. Esto funciona bien en días festivos de varios días, pero para días solos, parece que no se está registrando, solo tengo un ''día festivo de singularidades'' reservado desde la medianoche hasta la medianoche.

De acuerdo con MSDN , establecer las horas de inicio y finalización en 00:00 debería ser suficiente para hacer esto. También intenté usar las banderas X-MICROSOFT-CDO-ALLDAYEVENT y X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT, pero no parecen tener ningún efecto.

¿Alguien puede ver dónde me estoy equivocando? He incluido la salida de muestra a continuación.

BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH X-MS-OLK-FORCEINSPECTOROPEN:TRUE BEGIN:VEVENT CLASS:PUBLIC DESCRIPTION:HOLIDAY/n DTEND;VALUE=DATE:20090727 DTSTAMP:20091111T000000Z DTSTART;VALUE=DATE:20090727 LAST-MODIFIED:20091111T000000Z PRIORITY:5 SEQUENCE:0 SUMMARY;LANGUAGE=en-gb:HOLIDAY TRANSP:OPAQUE X-ALT-DESC;FMTTYPE=text/html:HOLIDAY X-MICROSOFT-CDO-BUSYSTATUS:OOF X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-DISALLOW-COUNTER:FALSE X-MS-OLK-ALLOWEXTERNCHECK:TRUE X-MS-OLK-CONFTYPE:0 X-MICROSOFT-CDO-ALLDAYEVENT:TRUE X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE END:VEVENT END:VCALENDAR


encontró la respuesta. para hacer un evento de todo el día, necesita hacer que la cita termine a la medianoche del día siguiente.


El comentario anterior RE: la medianoche del día siguiente no funcionó para mí en el iCal de Apple. Para evitar esto, en cada una de las secciones BEGIN: VEVENT, he generado las fechas de la siguiente manera:

DTSTART;VALUE=DATE:20100101 DTEND;VALUE=DATE:20100101

¡No sé si aún necesitas las etiquetas de Microsoft!


No estoy seguro acerca de MSDN, pero de acuerdo con la última especificación ical, un solo día de todo el evento comienza en 1 día y termina en el siguiente (no a medianoche, que suena como al final del día, pero se supone que es 00:00, es decir, inicio de día, similar, supongo)

En la última especificación RFC 5545, si uno no tiene fecha de finalización o final = inicio, entonces es un aniversario, no un evento de un día durante todo el día.

Si sus archivos ics se van a utilizar en otro lugar o se propocionarán más, entonces vale la pena tratar de hacerlo bien.

Una nota sobre esto aquí: http://icalevents.com/1778-all-day-events-adding-a-day-or-not/


Sé que llego muy tarde a la fiesta, pero de acuerdo con el RFC original , un evento de todo el día está especificado por un DTSTART sin DTEND. Esto funciona para mí en Outlook 2007 y Google.


Dejando esto aquí para cualquier otra persona en Google. Tuve problemas con la misma combinación de eventos de todo el día y medios días, particularmente en Google Calendar.

Mi problema estaba relacionado con la forma en que se descargaba el archivo ICS. suena tonto, pero un encabezado que forzó la descarga impidió que el calendario de Google analizara correctamente todos los eventos del día. La transmisión al navegador tuvo mejores resultados. Muestra de salida aquí. (use VALOR = FECHA) para eventos únicos de todo el día.

BEGIN:VEVENT UID:1248 DTSTART;VALUE=DATE:20151218 DTEND;VALUE=DATE:20151219 DTSTAMP:20151218T080000Z CREATED:20151212T200409Z DESCRIPTION:examplea LAST-MODIFIED:20151218T080000Z LOCATION: SUMMARY:example summary SEQUENCE:0 STATUS:CONFIRMED TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:1249 DTSTART;VALUE=DATE:20151217 DTEND;VALUE=DATE:20151218 DTSTAMP:20151217T080000Z CREATED:20151212T200409Z DESCRIPTION:example1 LAST-MODIFIED:20151217T080000Z LOCATION: SUMMARY:Example SEQUENCE:0 STATUS:CONFIRMED TRANSP:OPAQUE END:VEVENT


@ IceCool tiene razón, simplemente omitir el DTEND no es suficiente ... dependerá del tipo de datos de DTSTART si eso funciona.

La especificación dice que si DTSTART tiene un tipo de datos DATE y no hay un DTEND , el evento finaliza al final del día en que comienza. Pero si DTSTART tiene un tipo de datos de DATE-TIME completo, y no hay ningún tipo de DTEND entonces termina al mismo tiempo que comienza.

Está en la sección 3.6.1 de RFC 5545 ( http://tools.ietf.org/html/rfc5545#page-54 ):

Para los casos en que un componente de calendario "VEVENT" especifica una propiedad "DTSTART" con un tipo de valor DATE pero no una propiedad "DTEND" ni "DURATION", la duración del evento se toma como un día. Para los casos en que un componente de calendario "VEVENT" especifica una propiedad "DTSTART" con un tipo de valor DATE-TIME pero no una propiedad "DTEND", el evento finaliza en la misma fecha y hora del día especificadas por la propiedad "DTSTART".

Entonces, el resultado es que para obtener un evento de todo el día, esto no es suficiente:

DTSTART:20100101T000000

No funciona porque el tipo de datos es DATE-TIME , por lo que el final del evento es el mismo que el inicio. Para hacer un evento de todo el día, debe agregar un DTEND explícito (también de tipo DATE-TIME ):

DTSTART:20100101T000000 DTEND:20100102T000000

o use el tipo de datos DATE , y luego no hay necesidad de un DTEND :

DTSTART;VALUE=DATE:20100101