diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-03-24 22:51:18 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-03-24 22:51:18 +0100 |
commit | 7346b0ced8059a9f4a546b56f636afc5eee126e8 (patch) | |
tree | 72024696f73d1a649af22731736c21d6b92a2717 /module | |
parent | Datetime cleanup. (diff) | |
download | calp-7346b0ced8059a9f4a546b56f636afc5eee126e8.tar.gz calp-7346b0ced8059a9f4a546b56f636afc5eee126e8.tar.xz |
Change overflow type for time-.
Diffstat (limited to 'module')
-rw-r--r-- | module/datetime.scm | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/module/datetime.scm b/module/datetime.scm index 01bbdfa1..1dd2f9bd 100644 --- a/module/datetime.scm +++ b/module/datetime.scm @@ -495,6 +495,9 @@ base rest))) (values time sum)))) +;; hour is number of days we overflow (negative) +;; (time- #03:00:00 #07:00:00) ; => 20:00:00 => 1 +;; time, Δtime → time, hour (define (time-% base change) (define-values (second-fixed change*) @@ -521,8 +524,10 @@ (if (>= (hour minute-fixed) (hour change)) (values (set (hour minute-fixed) = (- (hour change))) 0) - (values (set (hour minute-fixed) 0) - (- (hour change) (hour minute-fixed))))) + ;; TODO overflow more than one day + (let ((diff (- (hour change) (hour minute-fixed)))) + (values (set (hour minute-fixed) (- 24 diff)) + 1)))) (define-public (time- base . rest) (let ((sum 0)) |