(setq timezone (string-to-int timezone)))
;; Taking account of minute in timezone.
;; HHMM -> MM
- (let* ((abszone (timezone-abs timezone))
+ (let* ((abszone (abs timezone))
(minutes (+ (* 60 (/ abszone 100)) (% abszone 100))))
(if (< timezone 0) (- minutes) minutes))))
(t 0)))
;; (timezone-absolute-from-gregorian 1 1 1970)
(days (- date current-time-origin))
(days-1 (/ days 65536))
- (days-2 (mod (/ days 256) 256))
- (days-3 (mod days 256))
+ (days-2 (% (/ days 256) 256))
+ (days-3 (% days 256))
;; (seconds-per-day (float 86400))
(seconds-per-day-1 1)
(seconds-per-day-2 81)
;; (hibase (* hi current-time-arithmetic-base))
;; (lo (floor (- seconds hibase)))
(seconds-1 (/ seconds 65536))
- (seconds-2 (mod (/ seconds 256) 256))
- (seconds-3 (mod seconds 256))
+ (seconds-2 (% (/ seconds 256) 256))
+ (seconds-3 (% seconds 256))
hi lo
r
seconds-per-day*days-1
seconds-per-day*days-2
seconds-per-day*days-3)
(setq r (* days-3 seconds-per-day-3)
- seconds-per-day*days-3 (mod r 256))
+ seconds-per-day*days-3 (% r 256))
(setq r (+ (/ r 256)
(* days-2 seconds-per-day-3)
(* days-3 seconds-per-day-2))
- seconds-per-day*days-2 (mod r 256))
+ seconds-per-day*days-2 (% r 256))
(setq seconds-per-day*days-1 (+ (/ r 256)
(* days-1 seconds-per-day-3)
(* (/ days 256) seconds-per-day-2)
(* days seconds-per-day-1)))
(setq r (+ seconds-2 seconds-per-day*days-2)
- seconds-2 (mod r 256)
+ seconds-2 (% r 256)
seconds-1 (+ seconds-1 (/ r 256)))
(setq lo (+ (* seconds-2 256)
seconds-3 seconds-per-day*days-3))
(diff (- (timezone-zone-to-minute timezone)
(timezone-zone-to-minute local)))
(minute (+ minute diff))
- (hour-fix (timezone-floor minute 60)))
+ (hour-fix (floor minute 60)))
(setq hour (+ hour hour-fix))
(setq minute (- minute (* 60 hour-fix)))
;; HOUR may be larger than 24 or smaller than 0.
(- (/ (1- year) 100));; - century years
(/ (1- year) 400)));; + Gregorian leap years
-(defun timezone-abs (n)
- "Return the absolute value of N."
- (if (fboundp 'abs)
- (abs n)
- (if (< n 0) (- n) n)))
-
-(defun timezone-floor (n &optional divisor)
- "Return the largest integer no grater than N.
-With optional DIVISOR, return the largest integer no greater than ARG/DIVISOR."
- (if (fboundp 'floor)
- (floor n divisor)
- (if (null divisor)
- (setq divisor 1))
- (if (< n 0)
- (- (/ (- divisor 1 n) divisor))
- (/ n divisor))))
-
;;; @ End.
;;;