Nadat ik erachter was gekomen dat mijn problemen met de evenementenkalender van de Universiteit Twente, die ik via Google Calendar op mijn Androidtelefoon wilde hebben, niet werden veroorzaakt door de software van de UT, maar door Google Calendar, heb ik eerst gehoopt dat Google voor een oplossing zou zorgen. Maar dat is niet waarschijnlijk; het probleem bestaat al jaren. Met een hack lijkt het nu wel gelukt.
Het probleem was dus dat Google Calendar een kalender waarin tijden niet worden gerelateerd aan UTC of een tijdzone, de tijden interpreteert als GMT. Dit gaat tegen de specificatie in, die zegt dat deze tijden moeten “drijven” op de aangegeven tijd, in welke tijdzone je je ook bevindt. Lunchvoorstellingen die om 12:35u begonnen (of het nou zomer- of wintertijd was), stonden daarom in de zomer om 14:35u en in de winter om 13:35u in mijn agenda.
iCalendar heeft als voordeel dat het een tekstformaat is. Daardoor is het met een scripttaal als PHP (en de Stringfuncties) makkelijk te bewerken. In het hulpforum van Google Calendar had iemand een met PHP gemaakte hack geplaatst. Door die code aan te passen aan mijn wensen is het nu gelukt om Google Calendar de juiste informatie te laten weergeven.
Zoals de iCalendarspecificatie voorschrijft, staat nu het versienummer (2.0) op de tweede regel. De regel die aangeeft met welk product de iCalendar is gemaakt wordt iets aangepast: “UT” is nu “UT Ben” :). De informatie over tijdzone, inclusief zomertijd, heb ik gekopieerd uit de kalender van de Vrijhof. Niet onbelangrijk is dat lege eindtijden (“DTEND:”) worden verwijderd (die mogen niet van de specificatie). Als laatste worden alle tijden van evenementen nu voorzien van een tijdzone-identificatie die verwijst naar de gedefinieerde tijdzone Europe/Amsterdam.
Met deze aanpassingen van de originele iCalendar gaat het laden in Google Calendar voorlopig goed. Ook proberen? Geef Google Calendar de URL http://companjen.name/ical-ut-utf8.php.