BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
X-WR-CALNAME:Test Cal
X-WR-CALDESC:2016-2017
X-WR-TIMEZONE:America/Toronto
BEGIN:VTIMEZONE
TZID:America/Toronto
X-LIC-LOCATION:America/Toronto
BEGIN:STANDARD
DTSTART:20161106T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20170312T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:20161020T235802EDT-7919w7sZDz
DTSTAMP:20161021T035802Z
DESCRIPTION:Details Sat Oct 15\, 2016 6:00pm - 7:00 pm
DTSTART;TZID=America/Toronto:20161015T180000
DTEND;TZID=America/Toronto:20161015T190000
LOCATION:Hockey Arena
SEQUENCE:1
SUMMARY:Game
END:VEVENT
END:VCALENDAR
This calendar when subscribed to in Gmail, iPhone or iCloud show the correct time of this even at 6pm. However Outlook Live displays this event one hour later : 7pm to 8pm. Why would this be? The dates and times are correct after daylights savings time change. So after Nov 5th, the times are correct.
Dont know where you got this VTIMEZONE definition but it has the DST starting only in 2017.
Try with something like:
BEGIN:VTIMEZONE
TZID:America/Toronto
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
DTSTART:20081102T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
DTSTART:20080309T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
I'm assuming that the empty lines were added only in your stackoverflow post.
Related
Im trying to delete a series of dates like google or zoom does ("delete this and following occurrences") but cant seem to delete them all
here is the code I'm using to do so
RECURRENCE-ID;RANGE=THISANDFUTURE;TZID=America/New_York:20230221T100000Z
I saw few people recommending to use UNTIL in the range parameter for recurrence-id but cannot find any syntax or working example.
Thanks in advance
Full code for creating recurring event:
BEGIN:VCALENDAR
VERSION:2.0
PRODID://Events//iCal 2.1//EN
METHOD:REQUEST
X-WR-CALNAME:Event Calendar
X-WR-TIMEZONE:America/New_York
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/New_York
TZURL:http://tzurl.org/zoneinfo-outlook/America/New_York
X-LIC-LOCATION:America/New_York
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=3;BYDAY=2SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
TRANSP:OPAQUE
CREATED:20221221T094254Z
UID:TESTSC20221221094254
DTEND;TZID=America/New_York:20221226T110000
SUMMARY:deadline approaching Event
LOCATION;ENCODING=QUOTED-PRINTABLE:Virtual Meeting
DTSTART;TZID=America/New_York:20221226T100000
DTSTAMP:20221221T094254Z
ORGANIZER;CN=Events:mailto:events#abc.org
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=abc#abc.org;X-NUM-GUESTS=0:mailto:abc#abc.org
STATUS:CONFIRMED
DESCRIPTION:A. Want to join the meeting from your computer, tablet or smartphone?\n go to https://zoom.us/
SEQUENCE:0
RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20230228T110000Z
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT10M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR
Full code I use for deleting:
VERSION:2.0
PRODID://Events//iCal 2.1//EN
METHOD:CANCEL
X-WR-CALNAME:Event Calendar
X-WR-TIMEZONE:America/New_York
CALSCALE:GREGORIAN
BEGIN:VEVENT
TRANSP:OPAQUE
CREATED:20221221T145554Z
UID:TESTSC20221221094254
DTSTART;TZID=America/New_York:20221226T100000
DTEND;TZID=America/New_York:20221226T110000
SUMMARY:Event: deadline approaching Cancelled
LOCATION;ENCODING=QUOTED-PRINTABLE:Virtual Meeting
DTSTAMP:20221221T145554Z
ORGANIZER;CN=Events:mailto:events#abc.org
RECURRENCE-ID;RANGE=THISANDFUTURE;TZID=America/New_York:20230221T100000Z
SEQUENCE:0
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=abc#abc.org;X-NUM-GUESTS=0:mailto:abc#abc.org
STATUS:CANCELLED
DESCRIPTION:This meeting has been deleted. Please contact HQ for scheduling a new meeting or more information about this.
END:VEVENT
END:VCALENDAR```
This is a basic.ics file containing a recurring event and a non-recurring event
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:GreekMan
X-WR-TIMEZONE:Asia/Nicosia
BEGIN:VTIMEZONE
TZID:Europe/Moscow
X-LIC-LOCATION:Europe/Moscow
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:MSK
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Asia/Nicosia
X-LIC-LOCATION:Asia/Nicosia
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19701025T040000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19700329T030000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART:20221110T140000Z
DTEND:20221110T143000Z
DTSTAMP:20221110T093950Z
UID:52kaiifeon2cdil0m6ln6m4cf6#google.com
CREATED:20221110T091122Z
LAST-MODIFIED:20221110T091122Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:non recurring event 1600
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Asia/Nicosia:20221110T130000
DTEND;TZID=Asia/Nicosia:20221110T133000
RRULE:FREQ=WEEKLY;BYDAY=TH
DTSTAMP:20221110T093950Z
UID:4ponmapnn5o6bj0fep6kfplcf4#google.com
CREATED:20221110T091051Z
DESCRIPTION:
LAST-MODIFIED:20221110T091101Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:recurring event 1300
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
I download this file with wget and convert it to a table using this command
awk 'BEGIN{FS=":"}/^DTSTART/{dtstart=$2}/^SUMMARY/{summary=$2}/^END:VEVENT/{print substr(dtstart,7,2)"/"substr(dtstart,5,2)"/"substr(dtstart,1,4),sprintf("%02d",substr(dtstart,10,2)'+2')":"substr(dtstart,12,2),summary}' basic.ics
This is the output. As you can see the recurring event is showing the wrong time.
10/11/2022 16:00 non recurring event 1600
10/11/2022 15:00 recurring event 1300
google calendar shows the time in UTC+0, so as you can see in the above command I add 2 hours to each event to make it UTC+2.
The problem is that recurring events include the timezone on DTSTART, so those events don't have to be corrected.
How can I modify the command to avoid adding 2 hours to recurring events?
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.
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.
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).