New Daylight Saving Time Rules: How They Affect Allegro CL

Starting in 2007, Daylight Saving Time is scheduled to start earlier in the United States than it has in previous years. The transition day this year is March 11. Also, the switch back to Standard Time is going to happen later starting in 2007 in the United States than it has in previous years.

How do the new Daylight Saving Time rules affect Allegro CL?

Allegro CL needs to make use of current and past Daylight Saving Time rules because Common Lisp specifies that the universal-time functions use Daylight Saving Time to accurately calculate and return time values. In a fully patched Allegro CL, the host operating system is consulted to determine whether a date is in Daylight Saving Time or in Standard Time.

One potential problem for Allegro CL users in 2007 is that the host operating system itself may not be updated to the new Daylight Saving Time rules. (For Microsoft Windows, please look at the Supporting the DST changes on Windows operating systems section in the online document at http://support.microsoft.com/gp/dst_overview. For other operating systems, please consult their support or web sites.) Operating systems using the old rules may not switch to Daylight Saving Time on March 11, but on April 1. If you find you are in that situation and want to have Allegro CL use the new rules even on an non-updated operating system, you can set the variable

 excl::*use-us-daylight-saving-time*

to true. When this variable is set, then if

 excl:*daylight-saving-time-observed*

is also set, then Allegro CL will use the new United States Daylight Saving Time rules for years including and beyond 2007 and the previous United States Daylight Saving Time rules for earlier years.

You can check to see if your Allegro CL is properly patched and how it treats Daylight Saving Time using Lisp expressions:

To see if you have the latest Daylight Saving Time patches, evaluate the following:

 (boundp 'excl::*use-us-daylight-saving-time*)

If the return value is nil, then you do not have the latest patch, and you should consider updating your Lisp using

 (sys:update-allegro)

If you are in a United States state that observes Daylight Saving Time, then you can check if Allegro CL will properly transition to Daylight Saving Time on March 11 in 2007 by evaluating the following:

 (nth-value 7 (decode-universal-time (encode-universal-time 0 0 3 11 3 2007)))

If the return value is nil, then Allegro CL is not set to properly transition to Daylight Saving Time on March 11 in 2007. You will either need to update your operating system, or, as a workaround until you can update your operating system, you can set both of the following global variables to true:

 (setq excl::*use-us-daylight-saving-time* t)
 (setq *daylight-saving-time-observed* t)

Then, Allegro CL will consider Daylight Saving Time as starting on 11 March 2007 without consulting the host operating system.

Copyright © 2014 Franz Inc., All Rights Reserved | Privacy Statement
Delicious Google Buzz Twitter Google+