aboutsummaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/datetime/util.scm11
1 files changed, 11 insertions, 0 deletions
diff --git a/module/datetime/util.scm b/module/datetime/util.scm
index 50c7c725..ff75e86d 100644
--- a/module/datetime/util.scm
+++ b/module/datetime/util.scm
@@ -70,6 +70,17 @@
(zeller J (1- K) (+ m 12) (day date))
(zeller J K (month date) (day date)))))
+;; Given a date, returns the earliest start of week going backwards from that date.
+;; sön 22 mar 2020 20:09:57 CET
+;; @example
+;; (previous-week-start #2020-03-22 mon)
+;; => 2020-03-16
+(define-public (previous-week-start date* week-start)
+ ((@ (srfi srfi-41 util) stream-find)
+ (lambda (d) (= week-start (week-day d)))
+ ((@ (srfi srfi-41) stream-iterate) (cut date- <> (date day: 1))
+ date*)))
+
(define-many define-public
(sun) 0
(mon) 1