Mercurial > emacs
changeset 76475:321e7fa1c51d
(math-std-daylight-savings): Switch to new North American rule.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 17 Mar 2007 17:41:19 +0000 |
parents | 273b86e5b88a |
children | 3878691bdbb7 |
files | lisp/calc/calc-forms.el |
diffstat | 1 files changed, 10 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calc/calc-forms.el Sat Mar 17 17:37:41 2007 +0000 +++ b/lisp/calc/calc-forms.el Sat Mar 17 17:41:19 2007 +0000 @@ -1312,20 +1312,20 @@ (calcFunc-unixtime (calcFunc-unixtime date z1) z2))) (defun math-std-daylight-savings (date dt zone bump) - "Standard North American daylight savings algorithm. -This implements the rules for the U.S. and Canada as of 1987. -Daylight savings begins on the first Sunday of April at 2 a.m., -and ends on the last Sunday of October at 2 a.m." - (cond ((< (nth 1 dt) 4) 0) - ((= (nth 1 dt) 4) - (let ((sunday (math-prev-weekday-in-month date dt 7 0))) + "Standard North American daylight saving algorithm. +This implements the rules for the U.S. and Canada as of 2007. +Daylight saving begins on the second Sunday of March at 2 a.m., +and ends on the first Sunday of November at 2 a.m." + (cond ((< (nth 1 dt) 3) 0) + ((= (nth 1 dt) 3) + (let ((sunday (math-prev-weekday-in-month date dt 14 0))) (cond ((< (nth 2 dt) sunday) 0) ((= (nth 2 dt) sunday) (if (>= (nth 3 dt) (+ 3 bump)) -1 0)) (t -1)))) - ((< (nth 1 dt) 10) -1) - ((= (nth 1 dt) 10) - (let ((sunday (math-prev-weekday-in-month date dt 31 0))) + ((< (nth 1 dt) 11) -1) + ((= (nth 1 dt) 11) + (let ((sunday (math-prev-weekday-in-month date dt 7 0))) (cond ((< (nth 2 dt) sunday) -1) ((= (nth 2 dt) sunday) (if (>= (nth 3 dt) (+ 2 bump)) 0 -1))