I am dealing with service appointments and need to handle displaying appointment times based on the appointment location's local time among other things. I did some research on the timezone data in CRM and noticed some things that don't appear to be correct.
First issue: the start and end of daylight savings time are wrong. For example, looking at US Eastern Standard Time (EST), currently it is in standard time so the time is GMT-500. I need to know when DST starts and ends so I can calculate correctly, but looking at the UserSettings record for the current user (using OData service endpoint) the TimeZoneDaylightMonth is 3 and TimeZoneDaylightDay is 2, if I'm reading this right that would be March 2nd, but it should be March 8th. We also have a purchased timezone offset and daylight start/end data set in our local database that I am comparing to. Standard month and day values appear to be correct at November 1st.
snippet from OData query results:
<d:TimeZoneDaylightDay m:type="Edm.Int32">2</d:TimeZoneDaylightDay>
<d:TimeZoneCode m:type="Edm.Int32">35</d:TimeZoneCode>
<d:TimeZoneStandardMonth m:type="Edm.Int32">11</d:TimeZoneStandardMonth>
<d:TimeZoneStandardDay m:type="Edm.Int32">1</d:TimeZoneStandardDay>
<d:TimeZoneDaylightMonth m:type="Edm.Int32">3</d:TimeZoneDaylightMonth>
Second issue: I went a little further and linked into the TimeZoneRule record from the UserSettings record using TimeZoneCode field. I should note here that I do see two rule records for the timezone, one record has what appears to be standard and daylight start dates that are based on old laws in the US, and the other rule record has dates that match the UserSettings record.
If I'm correct in looking at this, won't times on date/time fields in CRM display incorrectly for a period of time, for example: from March 2nd to March 8th? Or am I missing something here?