diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-03-23 00:34:28 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-03-23 00:36:21 +0100 |
commit | ae47899079a448b2d71101d4b21c8e9409d82e34 (patch) | |
tree | 73fa1ec4d618d2a66650fee59b1e377cd7b3e40a /module/datetime | |
parent | Remove unused datetime->decimal-hour. (diff) | |
download | calp-ae47899079a448b2d71101d4b21c8e9409d82e34.tar.gz calp-ae47899079a448b2d71101d4b21c8e9409d82e34.tar.xz |
Remove deprecated get-time.
Diffstat (limited to '')
-rw-r--r-- | module/datetime.scm | 25 | ||||
-rw-r--r-- | module/datetime/util.scm | 39 |
2 files changed, 51 insertions, 13 deletions
diff --git a/module/datetime.scm b/module/datetime.scm index 2b330a9c..9b0ccd47 100644 --- a/module/datetime.scm +++ b/module/datetime.scm @@ -142,8 +142,8 @@ ;; timezone info it's discarded and a local timestamp produced. ;; It's deprecated since the local time of a datetime can be in another date ;; than the original. which is fun... -(define-public (get-time dt) - (get-time% (get-datetime dt))) +;; (define-public (get-time dt) +;; (get-time% (get-datetime dt))) ;;; UTIL @@ -176,7 +176,7 @@ [else "Object not a date, time, or datetime object ~a" date/-time])) (define-public (as-time date/-time) - (cond [(datetime? date/-time) (get-time date/-time)] + (cond [(datetime? date/-time) (get-time% (get-datetime date/-time))] [(date? date/-time) (time)] [(time? date/-time) date/-time] [else "Object not a date, time, or datetime object ~a" date/-time])) @@ -207,8 +207,10 @@ (= (second a) (second b)))) (define-public (datetime= a b) - (and (date= (get-date a) (get-date b)) - (time= (get-time a) (get-time b)))) + (let ((a (get-datetime a)) + (b (get-datetime b))) + (and (date= (get-date a) (get-date b)) + (time= (get-time% a) (get-time% b))))) (define-many define-public (date=?) date= @@ -530,12 +532,15 @@ ;;; DATETIME +;; NOTE that base is re-normalized, but change isn't. This is due to base +;; hopefully being a real date, but change just being a difference. (define-public (datetime+ base change) - (let* ((time overflow (time+ (get-time base) (get-time change)))) - (datetime date: (date+ (get-date base) - (get-date change) - (date day: overflow)) - time: time))) + (let ((base (get-datetime base))) + (let* ((time overflow (time+ (get-time% base) (get-time% change)))) + (datetime date: (date+ (get-date base) + (get-date change) + (date day: overflow)) + time: time)))) ;; (define (datetime->srfi-19-date date) ;; ((@ (srfi srfi-19) make-date) diff --git a/module/datetime/util.scm b/module/datetime/util.scm index ff75e86d..d5558aa2 100644 --- a/module/datetime/util.scm +++ b/module/datetime/util.scm @@ -150,7 +150,29 @@ #f (string->list fmt))))) -(define*-public (time->string time optional: (fmt "~H:~M:~S") key: allow-unknown?) +;; (define*-public (time->string time optional: (fmt "~H:~M:~S") key: allow-unknown?) +;; (with-output-to-string +;; (lambda () +;; (fold (lambda (token state) +;; (case state +;; ((#\~) +;; (case token +;; ((#\~) (display "~")) +;; ((#\H) (format #t "~2'0d" (hour time))) +;; ((#\M) (format #t "~2'0d" (minute time))) +;; ((#\S) (format #t "~2'0d" (second time))) +;; ;; ((#\z) (when (utc? time) (display "Z"))) +;; (else (unless allow-unknown? +;; (error 'time->string "Invalid format token ~a" token)))) +;; #f) +;; (else (unless (char=? #\~ token) (display token)) token))) +;; #f +;; (string->list fmt))))) + +(define*-public (datetime->string datetime optional: (fmt "~Y-~m-~dT~H:~M:~S") key: allow-unknown?) + (define dt (get-datetime datetime)) + (define date (get-date dt)) + (define time ((@ (datetime) get-time%) dt)) (with-output-to-string (lambda () (fold (lambda (token state) @@ -161,9 +183,21 @@ ((#\H) (format #t "~2'0d" (hour time))) ((#\M) (format #t "~2'0d" (minute time))) ((#\S) (format #t "~2'0d" (second time))) + ;; TODO ;; ((#\z) (when (utc? time) (display "Z"))) + ((#\Y) (format #t "~4'0d" (year date))) + ((#\m) (format #t "~2'0d" (month date))) + ((#\d) (format #t "~2'0d" (day date))) + ;; Should be same as ~_d + ((#\e) (format #t "~2' d" (day date))) + ((#\1) (format #t "~4'0d-~2'0d-~2'0d" + (year date) (month date) (day date))) + ((#\a) (display (week-day-name (week-day date)))) + ;; abriviated locale month name + ;; TODO locale + ((#\b) (display (month-name (month date)))) (else (unless allow-unknown? - (error 'time->string "Invalid format token ~a" token)))) + (error 'datetime->string "Invalid format token ~a" token)))) #f) (else (unless (char=? #\~ token) (display token)) token))) #f @@ -171,7 +205,6 @@ - ;; @verbatim ;; A B C D E ¬F ;; |s1| : |s2| : |s1| : |s2| : : |s1| |