summaryrefslogtreecommitdiff
path: root/time.lisp
blob: 009e9a50cf488e843eb92ff1d7118d2bb5725041 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
;; Makes a-list with '((hours . HOURS) (minutes . MINUTES) (seconds . SECONDS) (cs . CENTISECONDS))
(defun make-time-alist (cs)
  `((hours    . ,(floor (/ cs (* 100 60 60))))
	  (minutes . ,(floor (mod (/ cs (* 100 60)) 60)))
	  (seconds . ,(floor (mod (/ cs 100) 60)))
	  (cs      . ,(mod cs 100))))

;; Formats, disregarding min/hour if they shouldn't be shown, a time alist to "H:M:S.ms"
(defun format-time (time-alist)
  (let
      ((hours (cdr (assoc 'hours time-alist)))
       (minutes (cdr (assoc 'minutes time-alist)))
       (seconds (cdr (assoc 'seconds time-alist)))
       (centis (cdr (assoc 'cs time-alist))))
    (concatenate 'string
                 (unless (zerop hours) (format nil "~2,'0d:" hours))
                 (unless (and (zerop minutes) (zerop hours)) (format nil "~2,'0d:" minutes))
                 (format nil "~2,'0d.~2,'0d" seconds centis))))