Function: decoded-time--alter-second
decoded-time--alter-second is a byte-compiled function defined in
time-date.el.gz.
Signature
(decoded-time--alter-second TIME SECONDS)
Documentation
Increase the time in TIME by SECONDS.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/time-date.el.gz
(defun decoded-time--alter-second (time seconds)
"Increase the time in TIME by SECONDS."
(let* ((time-sec (time-convert (or (decoded-time-second time) 0) t))
(time-hz (cdr time-sec))
(old (time-add time-sec
(time-convert
(+ (* 3600 (or (decoded-time-hour time) 0))
(* 60 (or (decoded-time-minute time) 0)))
time-hz)))
(new (time-convert (time-add old seconds) t))
(new-hz (cdr new))
(secsperday (time-convert 86400 new-hz)))
;; Hm... DST...
(while (time-less-p new 0)
(decoded-time--alter-day time nil)
(setq new (time-add new secsperday)))
(while (not (time-less-p new secsperday))
(decoded-time--alter-day time t)
(setq new (time-subtract new secsperday)))
(let ((sec (time-convert new 'integer)))
(setf (decoded-time-second time) (time-add
(time-convert (% sec 60) new-hz)
(time-subtract
new (time-convert sec new-hz)))
(decoded-time-minute time) (% (/ sec 60) 60)
(decoded-time-hour time) (/ sec 3600)))))