For your ICS to work with Google "Add by URL ...", specify the timestamps in UTC and add X-WR-TIMEZONE . The timestamp must have Z at the end to mark the timestamp as UTC:
DTSTART:20140102T110000Z
Also add the time zone specification in the VCALENDAR block as follows:
X-WR-TIMEZONE:Europe/Zurich
After adding the calendar to Google Calendar, the time zone must be set correctly in the calendar settings.
If you use PHP to create ICS, you can convert timestamps to UTC as follows:
// 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("dmY 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');
It also works on an Apple iPhone.
source share