about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--dump/utils.scm18
1 files changed, 17 insertions, 1 deletions
diff --git a/dump/utils.scm b/dump/utils.scm
index d033f17..8544eec 100644
--- a/dump/utils.scm
+++ b/dump/utils.scm
@@ -1,11 +1,27 @@
 (define-module (dump utils)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:export (string-blank?
             translate-forms
             collect-forms
-            map-alist))
+            map-alist
+            time-unix->string))
+
+
+(define (time-unix->string seconds . maybe-format)
+  "Given an integer saying the number of seconds since the Unix
+epoch (1970-01-01 00:00:00), SECONDS, format it as a human readable
+date and time-string, possible using the MAYBE-FORMAT."
+  (letrec ([time-unix->time-utc
+            (lambda (seconds)
+              (add-duration
+               (date->time-utc (make-date 0 0 0 0 1 1 1970 0))
+               (make-time time-duration 0 seconds)))])
+    (apply date->string
+           (time-utc->date (time-unix->time-utc seconds))
+           maybe-format)))
 
 (define (string-blank? str)
   "Return non-#f if STR consists only of whitespace characters."