Solo día todas las citas del día en .archivos ics

Estoy creando un archivo ics usando ASP.NET para la importación de vacaciones en Outlook 2007 y tratando de establecer el día del evento bandera. Esto funciona bien en varios días de vacaciones, pero para días sueltos, no parece ser el registro, acabo de llegar de una ‘singularidad de vacaciones’ reservado desde la medianoche hasta la medianoche.

Según MSDN, establecer el inicio y el final de los tiempos, a las 00:00 debería ser suficiente para hacer esto. También he intentado usar el X-MICROSOFT-CDO-ALLDAYEVENT y X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT banderas, pero no parece tener ningún efecto.

¿Puede alguien ver a donde voy mal? He incluido la muestra de la salida de abajo.

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
InformationsquelleAutor wefwfwefwe | 2009-11-11

8 Kommentare

  1. 35

    @IceCool es correcto-simplemente omitiendo la DTEND no es suficiente…dependerá del tipo de datos de DTSTART si que funciona.

    La especificación dice que si DTSTART tiene un DATE tipo de datos, y no hay DTEND, a continuación, el evento termina al final del día en que se inicia. Pero si DTSTART dispone de un total de DATE-TIME tipo de datos, y no hay DTEND luego de que se termina en el mismo momento en que se inicia.

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

    Para los casos en que un «VEVENT» componente de calendario especifica un «DTSTART» de la propiedad con un valor de FECHA tipo, pero no «DTEND» ni la «DURACIÓN» de la propiedad, la duración del evento es llevado a ser un día. Para los casos en que un «VEVENT» componente de calendario especifica un «DTSTART» de la propiedad con una FECHA y HORA tipo de valor, pero no «DTEND» de la propiedad, el evento termina en el mismo calendario la fecha y la hora del día especificado por el «DTSTART» de la propiedad.

    Así, el resultado de todo esto es, 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, y por tanto el fin del evento es la misma que la de inicio. Para hacer un evento de todo el día o hay que agregar explícita DTEND (también de tipo DATE-TIME):

    DTSTART:20100101T000000
    DTEND:20100102T000000
    

    o utilizar el DATE tipo de datos y, a continuación, no hay necesidad de un DTEND:

    DTSTART;VALUE=DATE:20100101
    
    • más completa en mi humilde opinión. también tiene la solución más fácil: sólo tiene que utilizar VALUE=DATE:whateverdate
    • la última línea de esta respuesta no funciona. Sólo traté de importación en outlook.com y tengo una de 1 hora de la cita a partir de la medianoche, a pesar de que yo también había «X-MICROSOFT-CDO-ALLDAYEVENT:TRUE». He tenido que añadir «DURACIÓN:P1D» para llegar a ser todo el día
  2. 23

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

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

    No sé si usted todavía necesita el Microsoft tags, aunque?!

    • DTSTART y DTEND debería ser de 8 caracteres formato de Outlook 2003. Sin embargo, tan pronto como el uso de 2010, este no es un evento de todo el día. Para hacer un evento de todo el día en 2010, tenemos el formato largo (por ejemplo, 20120101T000000Z). Muy frustrante!
    • Esto funciona en Apple iCalendar, pero no en Outlook – outlook sólo se necesita DTSTART, y no DTEND. Sin embargo, la bala mágica que parece ser el uso de solo DTSTART – que funciona tanto en la más reciente de Outlook y iCal.
    • Si usted está usando SabreDAV de la biblioteca, esta es la forma: github.com/sabre-io/vobject/issues/184#issuecomment-70737873
  3. 4

    encontrado la respuesta. para hacer un evento de todo el día que usted necesita para hacer la cita final en la medianoche del día después.

    • He intentado esto para outlook, y mostrando como poner fin a la medianoche del día siguiente, NO como un evento de todo el día. Cuál sería la fecha de inicio de la ser? He probado la Medianoche del día anterior, y varias otras veces, pero ninguno parece funcionar en Outlook 2007. Gracias
    • Esto no funciona en iCal de Apple, ya sea. Usted necesidad de utilizar la solución sugerida por atomicguava. DTSTART:20100101
  4. 2

    Dejar esto aquí para que nadie Googlear.. he tenido problemas con el mismo, la mezcla de todos los eventos del día y la mitad de días en particular en el Calendario de Google.

    Mi problema estaba relacionado con cómo el archivo ICS estaba siendo la fuerza descargado. suena tonto, pero un cabezazo que obligó a descargar, impidió que el calendario de Google de manera adecuada en el análisis de eventos de todo el día. Streaming en el navegador tenido mejores resultados. Ejemplo de salida de aquí. (el VALOR de uso=FECHA) para un solo eventos 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
    
  5. 0

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

    La última especificación RFC 5545, si uno no tiene fecha de fin o end = inicio, a continuación, que es un poco un aniversario – no un día de evento de todo el día.

    Si sus archivos ics son para ser utilizados en otros lugares o se propagó más allá, entonces vale la pena tratar de conseguir este derecho.

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

    • El enlace no funciona. Viene con un error en el servidor.
    • enlace fijo – gracias por marcar
  6. 0

    anmari la respuesta parece ser la más precisa para la versión actual del calendario y Outlook365. Si uno pone en un comienzo y un final que son el mismo, que entra en el Calendario como una de medianoche evento y entra en la Outlook365 como un evento de todo el día que termina el día antes de que comience. La única manera para que funcione con ambos es que la fecha final para ser un día más tarde del inicio. Además, no incluya las DTSTAMP y poner el DTSTART y DTEND en el formato de fecha no de la fecha formato de hora.

  7. 0

    Acabo de cambiar la manera en la fecha en que fue formateado y trabajó para mí.

    Por ejemplo. Yo tenía este:

    DTSTART: " . date(ICAL_FORMAT, strtotime($event->date)) . "
    DTEND:" . date(ICAL_FORMAT, strtotime($event->date)) . "
    

    Cambiado a:

    DTSTART:" . date('Ymd', strtotime($event->date)) . "
    DTSTAMP:" . date('Ymd', strtotime($event->created_at)) . "
    
  8. -2

    Sé que soy muy tarde a la fiesta, pero de acuerdo a la RFC original, un evento de todo el día se especifica mediante un DTSTART sin DTEND. Esto funciona para mí en Outlook 2007 y Google.

    • La especificación es bastante contrario a lo que dices (página 52 final): Para los casos en que un «VEVENT» componente de calendario especifica un «DTSTART» de la propiedad con una FECHA de tipo de datos en TIEMPO, pero no «DTEND» de la propiedad, el evento termina en el mismo calendario la fecha y la hora del día especificado por el «DTSTART» de la propiedad.
    • echa un vistazo a la página 31, lista de los tipos de valor. hay (obviamente) no es necesario especificar un tiempo para un evento de todo el día. @IceCool

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea