wisp
 
(Arne Babenhauserheide)
2015-06-22: newbase60: add a date option

newbase60: add a date option

diff --git a/examples/newbase60.w b/examples/newbase60.w
--- a/examples/newbase60.w
+++ b/examples/newbase60.w
@@ -47,10 +47,28 @@ define : sxg->integer string
                 * n 60
               string-drop s 1
 
+define : date->sxg year month day hour minute second
+       . "Convert a date into new base 60 format:
+          yyyymmdd hhmmss -> YYMD-hms (can extend till 3599)
+         "
+       format #f "~A-~A" 
+           apply string-append
+             map integer->sxg
+                 list year month day
+           apply string-append 
+             map integer->sxg
+                 list hour minute second
+
+
 define : main args
          cond
            : or (= 1 (length args)) (member "--help" args)
              format #t "usage: ~A [-d string | integer | --help]\n" : list-ref args 0
+           : and (= 7 (length args)) : equal? "--datetime" : list-ref args 1
+             format #t "~A\n" : apply date->sxg : map string->number : drop args 2
+           : and (= 2 (length args)) : equal? "--datetime" : list-ref args 1
+             let : : tm : localtime : current-time
+               format #t "~A\n" : apply date->sxg : list (+ 1900 (tm:year tm)) (+ 1 (tm:mon tm)) (tm:mday tm) (tm:hour tm) (tm:min tm) (tm:sec tm)
            : and (= 3 (length args)) : equal? "-d" : list-ref args 1
              format #t "~A\n" : sxg->integer : list-ref args 2
            : = 2 : length args