La importación de ICS en el Calendario de Google con la zona horaria correcta

Estoy tratando de importar un simple archivo ics en el calendario de Google. Sin embargo, aunque tengo la zona horaria especificada, el calendario de Google todavía importa el mal tiempo del evento. (Aunque no dicen que el mal tiempo es en la zona horaria correcta.)

Aquí es una muestra de mi archivo ics:

BEGIN:VCALENDAR
BEGIN:VEVENT
DESCRIPTION: Test_Description
DTEND;TZID=US-Pacific:20140606T180000
DTSTART;TZID=US-Pacific:20140606T170000
LOCATION:Test_Location
SUMMARY:Test_Summary
UID:[email protected]
END:VEVENT
END:VCALENDAR

Este caso se debería mostrar como ocurre en el 6 de junio, a partir de las 5PM-6PM, Hora Estándar del Pacífico. Sin embargo, en mi calendario se muestra como ocurre en el 6 de junio, a partir de las 10AM-11AM PST.

Creo (aunque no lo han implementado) un hack de cambiar todo a la hora UTC y ajustar la hora del evento, en consecuencia podría trabajo. Sin embargo, esto podría ser un poco molesto para implementar y honestamente el Calendario de Google debe ser capaz de manejar este sencillo de una importación.

¿Alguien tiene alguna sugerencia para lidiar con esto, o ver los errores en mi archivo ICS?

Gracias!

OriginalEl autor sesquiped | 2014-05-30

2 Kommentare

  1. 3

    Normalmente es necesario incluir VTIMEZONE objetos. Muchas personas están empezando a omitir eso, pero si lo hace, al menos, utilizar un olson-identificador. Esto debería ser suficiente para el calendario de google para recoger la zona horaria correcta.

    Un ejemplo de un olson identificador es Europe/Amsterdam. Buscar el identificador de la más adecuada para usted. Presumiblemente, esto es algo así como America/Los_Angeles.

    Podría usted demostrar esto con el ejemplo que he proporcionado?
    La versión corta: try : DTSTART;TZID=America/Los_Angeles:20140606T170000
    OK, he seguido tus instrucciones y lo que se describe en erics-notes.blogspot.com/2013/05/fixing-ics-time-zone.html. Que trabajaban directamente para la carga de un local .archivo ics para el calendario de Google. Sin embargo, ahora el añadir por URL (para el mismo archivo) obtiene el momento equivocado! Pero supongo que es para otra pregunta.

    OriginalEl autor Evert

  2. 10

    Para hacer su ICS trabajar con Google «Añadir por URL…» especificar la hora en UTC y agregar el X-WR-TIMEZONE. Marca de tiempo debe tener la Z en la final a la marca de la marca de hora como hora UTC:

    DTSTART:20140102T110000Z
    

    Agregar también la zona horaria de especificación en el VCALENDAR bloque como este:

    X-WR-TIMEZONE:Europe/Zurich
    

    Después de añadir el calendario en Google Calendar, el tiempo, la zona debe estar configurado correctamente en el calendario de la configuración.

    Si está usando PHP para generar el ICS, puede convertir la fecha y hora UTC como este:

    //The timestamp in your local time and your local time zone
    $timestamp = "01.01.2016 12:00";
    $timezone = new DateTimeZone('Europe/Zurich');
    
    //The UTC timezone
    $utc = new DateTimeZone('UTC');
    
    //Create a DateTime object from your timestamp using your local timezone
    $datetime = DateTime::createFromFormat("d.m.Y H:i",$timestamp, $timezone);
    
    //Set the timezone on the object to UTC.
    $datetime->setTimezone($utc);
    
    //Print the time in UTC and use the correct format for ICS
    echo $datetime->format('Ymd\THis\Z');
    

    Esto también funciona en Apple iPhones.

    Donde debo poner el X-WR-la zona HORARIA de la línea? Debe ser parte de la de EMPEZAR:en la zona HORARIA del bloque? O parte de el evento?
    Ponga en el BEGIN:VCALENDAR bloque, antes de todos los eventos.
    Muchas gracias. Muy buena respuesta, útiles comentarios. Y me enteré de que Z significa UTC en la marca de hora. Buen trabajo.

    OriginalEl autor chris

Kommentieren Sie den Artikel

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