diff options
Diffstat (limited to 'module')
-rw-r--r-- | module/datetime.scm | 10 | ||||
-rw-r--r-- | module/datetime/util.scm | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/module/datetime.scm b/module/datetime.scm index 30fb6025..0b3179ee 100644 --- a/module/datetime.scm +++ b/module/datetime.scm @@ -98,6 +98,7 @@ ;; NOTE there isn't any stable way to craft the tm objects. ;; I could call mktime on some date, and replace the fields ;; with the set-tm:*, but that is worse that breaking the API. +;; TODO TZ! (define (datetime->tm datetime) (let ((t (get-time% datetime)) (d (get-date datetime))) @@ -113,6 +114,7 @@ #f ; TZ name ))) +;; TODO TZ (define (tm->datetime tm) (datetime year: (+ 1900 (tm:year tm)) month: (1+ (tm:mon tm)) @@ -121,6 +123,14 @@ minute: (tm:min tm) second: (tm:sec tm))) +(define-public (datetime->unix-time dt) + (car (mktime (datetime->tm dt)))) + +(define-public (unix-time->datetime n) + (tm->datetime (gmtime n))) + +;; TODO prodedure to change TZ for datetime object + ;; datetime → datetime ;; Takes a datetime in any timezone, and renormalize it to local time diff --git a/module/datetime/util.scm b/module/datetime/util.scm index 059308e6..a3e4eacc 100644 --- a/module/datetime/util.scm +++ b/module/datetime/util.scm @@ -133,6 +133,7 @@ ((#\m) (format #t "~2'0d" (month date))) ((#\d) (format #t "~2'0d" (day date))) ;; Should be same as ~_d + ((#\s) (display (datetime->unix-time datetime))) ; epoch time! ((#\e) (format #t "~2' d" (day date))) ((#\1) (format #t "~4'0d-~2'0d-~2'0d" (year date) (month date) (day date))) |