Thursday, March 08, 2007

Daylight Savings Time issues

We realized late last week that this DST change on 3/11/2007 is going to affect individual calendar entries in Lotus Notes and it can't be fixed simply by changing the clocks manually. Doh! The affected calendar entries will show meetings as one hour off their intended times when looking at them in the calendar view

Anyway, any calendar entry created from a computer that does not have the Daylight Savings Time patch installed (i.e. does not recognize the new Time Zones).

Calendar entries in Notes have a field called StartTimeZone that tells you the time zone code used when the meeting or appointment was scheduled. On unpatched machines this time zone is different than on patched machines, so this lets us spot calendar entries that will show the wrong time in the calendar view.

I added this column to the Calendar view in our mail template and now all of our users can spot these potentially wrong meetings easily. Make sure it is the right-most column which has the "Use Value as Color" setting checked, otherwise another column to the right will override these color highlights.

REM {this color column is used only if the user has not saved their mail preferences}; badtimezonelist := "Z=6$DO=1$DL=4 1 1 10 -1 1$ZX=18$ZN=Central":"Z=5$DO=1$DL=4 1 1 10 -1 1$ZX=25$ZN=Eastern":"Z=7$DO=1$DL=4 1 1 10 -1 1$ZX=41$ZN=Mountain" meeting := 194:229:255:0:0:0; appointment := 197:255:228:0:0:0; reminder := 250:236:218:0:0:0; event := 240:255:215:0:0:0; anniversary := 255:232:246:0:0:0; todo := 197:255:255:0:0:0; warning := 255:48:0:0:0:0; withindates := @If(@Elements(@Keywords(@Text(CalendarDateTime); @Text(@Explode([03/11/2007 - 03/30/2007])))) = 0; @False; @True); @If(@IsMember(StartTimeZone; badtimezonelist) & withindates; warning; @LowerCase(form) = "task" todo; AppointmentType = "0" appointment; AppointmentType = "1" anniversary; AppointmentType = "2" event; AppointmentType = "3" meeting; AppointmentType = "4" reminder; "")

As many sites recommend, we also told our uses to check all entries between March 11th and April 1st, just as a precaution.

The code above only takes into consideration calendar entries that were scheduled in the Eastern, Central, and Mountain timezones. There are a few other timezones implementing this early change, but I wasn't able to find the codes for them. You can find the codes by viewing Document Properties on any calendar entry set for another timezone, and then checking the StartTimeZone field. I'd assume if the $DL section is set to 4 1 1 10 -1, then you've found the code for an unpatched version of that time zone. Then just add that code to the text list called "badtimezonelist".