aboutsummaryrefslogtreecommitdiff
path: root/module/datetime.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-03-24 22:51:18 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2020-03-24 22:51:18 +0100
commit7346b0ced8059a9f4a546b56f636afc5eee126e8 (patch)
tree72024696f73d1a649af22731736c21d6b92a2717 /module/datetime.scm
parentDatetime cleanup. (diff)
downloadcalp-7346b0ced8059a9f4a546b56f636afc5eee126e8.tar.gz
calp-7346b0ced8059a9f4a546b56f636afc5eee126e8.tar.xz
Change overflow type for time-.
Diffstat (limited to 'module/datetime.scm')
-rw-r--r--module/datetime.scm9
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))