ICS Wrong Time Zone Appearing In Google Calendar - time

I am having a weird issue with ics calenders. I am creating a calendar with the following information:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.bingewave.com
X-WR-TIMEZONE:America/New_york
BEGIN:VTIMEZONE
TZID:America/New_york
X-LIC-LOCATION:America/New_york
END:VTIMEZONE
BEGIN:VEVENT
UID:61bb267c4074e
DTSTART;TZID=America/New_york:20211216T180000
SEQUENCE:0
TRANSP:OPAQUE
DTEND;TZID=America/New_york:20211216T210000
The time zone set to America/New_york and the time set to 180000, which is 6:00 PM. But I am getting this in my Google Calender:
Am I doing something wrong?

The answer is case sensitivity. New_york is not recognized, while New_York with a capital Y works. Apparently, Google Calendar is strict on upper and lowercase.

Related

How to get ics file to adjust to local time instead of changed time

I'm working on a scheduling application that utilizes an ics file to set up an appointment in outlook, the issue im having is that the appointment time changes depending on timezone and im not wanting it too. For example i want to set an appointment from 11am-noon from central time, the ics would change to adjust to the timezone eastern and make it from noon - 1pm. Here is what my ICS file looks like. I tried specifying Timezones in the TZID but it would always adjust.
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;CN=email<email#email.org>;RSVP=TRUE:mailto:email#email.org
CLASS:PUBLIC
CREATED:20201007T114658Z
DESCRIPTION:
DTEND;TZID="Central Standard Time":20201007T120000
DTSTAMP:20201007T114908
DTSTART;TZID="Central Standard Time":20201007T110000
LOCATION:Unknown
ORGANIZER;CN="Appointment":mailto:AppointmentsManager#email.org
PRIORITY:5
SEQUENCE:1
SUMMARY;LANGUAGE=en-us:east
TRANSP:OPAQUE
UID:X9053866f41994acda100ded7fb305ebe
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
Your ICS file does not have a VTIMEZONE component. If you specify a TZID for an event's start/end time, you must create a corresponding VTIMEZONE component that provides the definition for that timezone.
Alternatively, you could convert the start/end time to UTC, which means you don't need a TZID parameter:
DTEND:20201007T170000Z
DTSTART:20201007T160000Z
Another alternative: Use an Olsen timezone ID in the TZID parameter and prefix it with a slash. However, this is not guaranteed to work with all mail clients.
DTEND;TZID="/America/Chicago":20201007T120000
DTSTART;TZID="/America/Chicago":20201007T110000

ICAL in google calendar has extra event

I'm facing issue wherein google calendar is showing extra calendar event.
ICS
PRODID:-//TEST//NONSGML Version 1//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:Asia/Kolkata
BEGIN:DAYLIGHT
DTSTART:19411001T000000
TZOFFSETFROM:+055320
TZOFFSETTO:+0630
RDATE:19411001T000000
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:18800101T000000
TZOFFSETFROM:+055328
TZOFFSETTO:+055320
RDATE:18800101T000000
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19420901T000000
TZOFFSETFROM:+0530
TZOFFSETTO:+0630
RDATE:19420901T000000
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19420515T000000
TZOFFSETFROM:+0630
TZOFFSETTO:+0530
RDATE:19420515T000000
RDATE:19451015T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:19700119T063633Z
ORGANIZER:mailto:invite#a.com
UID:3fDJ2_gx5QJr4ygb#EqPBCMSzkxGfKg0
SEQUENCE:0
RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;BYDAY=SU,FR,SA
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:a#gmail.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:a#b.com
DTSTART;TZID=Asia/Kolkata:20200114T150000
DTEND;TZID=Asia/Kolkata:20200114T160000
SUMMARY:DEV TEST
TRANSP:OPAQUE
CREATED:20200114T091621Z
LAST-MODIFIED:20200114T091621Z
STATUS:CONFIRMED
LOCATION:Location
DESCRIPTION:Description
END:VEVENT
END:VCALENDAR
Calendar is created on wednesday for never ending weekly recurrence on days Friday, Saturday and Sunday. In google calendar I'm observing that there is an extra event created for wednesday(created date) including the recurrence events. I'm not observing this issue in outlook calendar.
Any idea why there is an extra event for the event create date created only in google calendar and not observed in outlook calendar.
I think this is due to different interpretations of the iCalendar specification:
https://www.rfc-editor.org/rfc/rfc5545#section-3.8.5.3
Particularly this section:
The "DTSTART" property defines the first instance in the recurrence
set. The "DTSTART" property value SHOULD be synchronized with the
recurrence rule, if specified. The recurrence set generated with a
"DTSTART" property value not synchronized with the recurrence rule is
undefined.
So the RFC doesn't define what happens when the DTSTART doesn't match the recurrence rule, and likely Google and Microsoft took different approaches.
To avoid this ensure your DTSTART occurs on a Friday, Saturday or Sunday.

iCal complex recurring event doesn't seem to be working properly

I have a script that generates ics files and some events tend to have complex recurrence rules (i.e. every Monday between date1 and date2 except on holiday1 or holiday2 but also occurs once on randomDate1)
Given my understanding of the spec defined here, it seems pretty straightforward to represent this as a mix between RRULE, RDATE and EXDATE
As you can see below in My Complex Event
RRULE defines the usual expected recurrence: every Monday between Jan 11 and April 15
RDATE defines one stray unusual date April 13
EXDATE removes the occurrence on Jan 25
However, once i open this file in MS Outlook 2016, i see the event on the dates targeted by RRULE, i don't see it on the one targeted by EXDATE (which is okay) but i don't see it on the date targeted by RDATE (not okay)
I have validated my ical here and found no errors. So i'm wondering:
Is this an Outlook bug? Is there some order i should use for the ical properties?
I also tried importing this into Google Calendar, but instead of seeing the occurrence defined on Wednesday April 13 i saw it on Tuesday April 12. The RRULE and EXDATE worked as expected too.
Any ideas?
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//dkhalife//NONSGML Dany v2.0//FR
METHOD:PUBLISH
X-WR-CALNAME:Dany
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/Montreal
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CATEGORIES:Cours
SUMMARY:My Complex Event
LOCATION:Location Location Location
DTSTART;TZID=America/Montreal:20160111T124500
DTEND;TZID=America/Montreal:20160111T143500
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415
RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125
UID:xxxx
END:VEVENT
END:VCALENDAR
Your event has a time, but the RDATE and EXDATE values are all-day, which doesn't make sense (I outlined that few years ago in response to a bug in KOrganizer) and is invalid IMO (even though RFC 5545 doesn't say that explicitly).
Try to replace
RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125
by
RDATE;TZID=America/Montreal:20160413T124500
EXDATE;TZID=America/Montreal:20160125T124500
Btw. the same is true for the UNTIL clause which MUST be specified in UTC time if your event is anchored in any time zone (this is explicitly specified in RFC 5545).
So your RRULE should look like:
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415T164500Z

iCal not correct time with google calender

I have a problem with my ical file.
In outlook I get the correct date 10.12.2015 20:00 - 10.12.2015 22:00.
In my Google calendar I got the date 10.12.2015 20:00 - 23.00.
The following is my ical file:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:*****
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:*****
ORGANIZER;CN="admin":MAILTO:*****
LOCATION:*****
SUMMARY:*****
DESCRIPTION:
CLASS:PUBLIC
DTSTART;TZID=Europe/Berlin:20151210T200800
DTEND;TZID=Europe/Berlin:20151210T220800
END:VEVENT
END:VCALENDAR
Try using a DURATION property instead of DTEND.
DTSTART;TZID=Europe/Berlin:20151210T200800
DURATION:PT2H
Well it looks like both clients are somehow rounding the time of the event from 20h08 / 22h08 to full hours. Given that the event runs after 22h, it makes as much sense to round it to 23h00: you probably don't want the user to doublebook the calendar by adding another event at 22h00, thinking that that slot is free when it is not (but that is no longer visible to the user).

Update an event in Outlook 2007 with an iCalendar file

There is a previous thread with this question, and hints at an answer, but I could not get it to work.
I have an ICS file. It validates. It looks like this:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
I double-click it and it goes into Outlook 2007 perfectly.
Then, I double-click another ICS file that looks like this:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
BEGIN:VEVENT
METHOD:REQUEST
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
As explained in the rfc, the UID is the same and the sequence number is one greater, so I expect outlook to update my previous event entry, but all it does is insert a second one.
How can I formulate the ICS file so that Outlook knows to update the event? The original poster in the thread I referenced above said he got it to respond with METHOD and ORGANIZER but in my experience METHOD has no effect and ORGANIZER causes undesirable behavior where Outlook wants to email the event to someone. I just want it to update the calendar.
I got a hold of Tom Carter, the guy who started the original thread. He had a working example with a request followed by a cancellation. What I had wrong was my METHOD was inside my VEVENT when it should have been outside. So here is a working update!
Original:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
ORGANIZER:donotreply#test.com
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
Update:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
ORGANIZER:donotreply#test.com
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
All I did was add the request method (in the correct spot!), and an organizer.

Resources