Outlook changes ICS All Day UTC events when changing timezone - outlook

I am currently in Eastern Standard Time and I have an event that should be all day on September 14, 2018. When I load this ICS calendar into my outlook 2016 on a Windows 10 computer, while my computer is in EST timezone, it shows the event correctly as all day. However, if I change my timezone to something like like Central Time, it changes the event to be from 11pm to 11pm.
I specified date only and the timezone to be UTC, and when I view the event in CT it even shows a message that it was changed from UTC. So why does this only seem to work in Eastern Time and not Central Time?
I also checked my options in Outlook and the TimeZone changes as I expect.
I have also tested the same calendar ics file on another computer that is in Eastern Standard Time. And the date shows as 8am to 8am, not all day.
Why am I seeing such different results? Is there a setting I am missing?
ICS TimeZone:
BEGIN:VTIMEZONE
TZID:UTC
BEGIN:STANDARD
DTSTART;VALUE=DATE:20170101
TZNAME:UTC
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
END:STANDARD
END:VTIMEZONE
ICS Event:
BEGIN:VEVENT
DESCRIPTION: Test description
DTEND;VALUE=DATE:20180915
DTSTAMP:20180912T123153Z
DTSTART;VALUE=DATE:20180914
ORGANIZER;Tester
SEQUENCE:0
SUMMARY: TestSubject
UID:69c1777d-71e4-4160-81c7-79b35d9cf924
BEGIN:VALARM
ACTION:Display
DESCRIPTION:Reminder
TRIGGER:-PT15M
END:VALARM
END:VEVENT

First of all, you do not need to include a VTIMEZONE component in your icalendar stream since it won't be referenced in the event itself.
Then, if the duration is exactly one day, you can try to remove the DTEND.
The other option is to represent this event as an event with floating time (i.e. DATETIME without specifying any timezone)
DTSTART:20180914T000000
DTEND:20180915T000000
Finally, you always have the option to create the event in outlook, check that it does not move when switching timezone, then export it as ics and see how it is represented.

Related

ICS Wrong Time Zone Appearing In Google Calendar

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.

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 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

Recurring calender invitation was showing one hour off after DST starts

I am sending a request from my .net application(C#) to create recurring meeting invite in outlook.
the meeting invite was showing one hour off during day light saving (march 8th 2015 to 1st nov 2015).
remaining time, my calender shows correct time and i am sending below code to outlook calender.
Please note my application source using EST and destination to all the time zones.
code for the same.
BEGIN:VCALENDAR
PRODID:-//Schedule a Meeting
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150221T120000Z
DTEND:20150221T123000Z
LOCATION:XYZ, ABC
UID:0c5c9c55-851f-462b-bdf2-48df5991561b
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Test for UTC Time Zone
SUMMARY:Test for UTC Time Zone
ORGANIZER:MAILTO:myapplication#gmail.com
ATTENDEE;CN="";RSVP=TRUE:mailto:sender#gmail.com.com
RRULE:FREQ=Monthly;COUNT=4;BYDAY=3SA
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
This is the problem:
DTSTART: starttime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z")
DTEND: Endtime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z")
You're explicitly specifying the start and end times as UTC, and you're never specifying the time zone.
If you want an event to be in a time zone, you should specify the local time instead of a UTC time (so no Z at the end) and a TZID property to specify the time zone. I suggest you export some of your existing events as ical entries to see what those look like.
You can leave the value without any time zone if you want it to be a "floating time" which will be interpreted in whatever the local time zone is.

outlook supports floating time for all-day events only spreading over multiple days

I am trying to create a .ics file for an event that spreads over 5 days. An example of the .ics content is found below:
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:BestMedTourDeBoland
DTSTART:20150302T000000
DTEND:20150306T230000
SUMMARY:Bestmed Tour De Boland
PRIORITY:3
END:VEVENT
END:VCALENDAR
As you can see the start date is set for 02 March and spans until the end of 06 March. When I import the .ics file I get the "outlook supports floating time for all-day events only" message. Any help on fixing this please?
It is telling you the problem: Don't use the floating time format for multi day events. Stick a Z after the DTSTART for UTC time or add a timezone identifier.
RFC 5545 explains the date format options: https://www.rfc-editor.org/rfc/rfc5545#page-33
or specifically on floating:
http://icalevents.com/2064-ical-local-or-floating-date-times/
Example:
`DTSTART:20100202T151500Z`
or with timezone id:
DTSTART;TZID=”America/New_York”:20080807T090000

Resources