2011-09-15 9 views
11

Recentemente ho riscontrato un problema con un file ICS che ho ricevuto tramite posta elettronica. La mia copia di Outlook 2010 non riconoscerebbe correttamente il fuso orario. Ecco il modo in cui l'ora di inizio della riunione è stata rappresentata nel file ICS:Esiste una soluzione alternativa per la mancanza del formato TZID Olsen TZ nel file ICS

DTSTART;TZID=America/Los_Angeles:20110928T183000 

Quando Outlook importare questo file, è cambiato il tempo da 6:30 ora del Pacifico alle 19:30 ora del Pacifico. Dopo alcuni esperimenti sono stato in grado di ottenere un file ICS che ha importato correttamente in Outlook cambiando il formato del fuso orario:

DTSTART;TZID="Pacific Time":20110928T183000 

Dopo alcune ulteriori ricerche ho scoperto che il ICS file specification lascia la questione dell'identificazione fuso orario aperta, ma suggerisce utilizzando the Olsen TZ database. Sembra che il team di Microsoft Outlook abbia scelto di ignorare questo suggerimento.

Dato che Outlook è un client di calendario abbastanza popolare, esiste un metodo affidabile per formattare i fusi orari ICS per Outlook che è ancora compatibile con altri client? La mia più grande preoccupazione su questo problema è l'errore silenzioso durante l'importazione di Outlook. Gli utenti potrebbero facilmente presentarsi per una riunione nel momento sbagliato, poiché Outlook non avvisa che è confuso riguardo al fuso orario. Dovremmo semplicemente indirizzare gli utenti di Outlook in un formato di file diverso?

Nota: So che questa domanda è simile a an earlier post, ma i riferimenti su quel post sembrano essere scaduti, e mi chiedo se ci sono soluzioni migliori là fuori.

+0

Il link nella risposta da http://stackoverflow.com/questions/3763503/writing-ics-files-for-multiple-clients-including-google è ora http://icalevents.com/category/notes/ . E il post più interessante relativo alla tua domanda sembra essere http://icalevents.com/2613-what-every-developer-ought-to-know-about-timezones-wrt-calendar-files/ - ma parla solo di analizzando i file ics (e diversi tz id), non cosa fare quando li si invia a più client. Hrmmpf. –

risposta

5

Difficile giudicare senza il file iCalendar completo ma hai definito/hai un componente VTIMEZONE nel tuo file calendario che definisce cosa dovrebbe essere America/Los_Angeles?

Qualcosa di simile:

BEGIN:VTIMEZONE 
TZID:America/Los_Angeles 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0800 
TZOFFSETTO:-0700 
TZNAME:PDT 
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0700 
TZOFFSETTO:-0800 
TZNAME:PST 
DTSTART:19701101T020000 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE 
+0

Egads! Ha funzionato! Nota: assicurarsi di ottenere la definizione VTIMEZONE prima della chiusura END: tag VCALENDAR. Grazie @oberron! –

1

Invece di aggiungere la definizione fuso orario nel file ics, sarebbe meglio parlare dei tempi di inizio evento/fine in sé UTC. E poi, il consumatore del file ICS - outlook nel tuo caso - dovrebbe essere in grado di eseguire la conversione del fuso orario da UTC (dal file ics) all'impostazione preferita del fuso orario dell'utente finale, appena prima di rendere l'evento della riunione sui loro calendari .

Pro: In questo modo non dovete prendere cura di aggiungere gli offset fuso orario corretto (componente VTIMEZONE) da soli. Inoltre, il file ics è molto più piccolo, più pulito, facile da leggere.

Riferimenti: Anche Google sembra essere la manipolazione fusi orari in questo modo ci si - Google timezone handling

Spero che questo aiuti.

+1

** Cont. **: non gestisce correttamente le modifiche all'ora legale per il fuso orario target. – Geoff

Problemi correlati