Browse Source

Minor Change

Samuel W. Flint 9 years ago
parent
commit
2c0091aa56
1 changed files with 25 additions and 1 deletions
  1. 25 1
      isodate.lisp

+ 25 - 1
isodate.lisp

@@ -5,7 +5,10 @@
         :esrap)
   (:export #:parse-date
            #:print-date
-           #:date-stamp))
+           #:date-stamp
+           #:parse-mini-date
+           #:print-mini-date
+           #:mini-date-stamp))
 
 (in-package #:iso-date)
 
@@ -168,3 +171,24 @@
 (defun date-stamp ()
   (values (print-date (get-universal-time))
           (get-universal-time)))
+
+(defrule minidate
+    (and year (? (and month (? (and day (? (and hour minute second)))))))
+  (:destructure (year (month (day (&optinal hour minute second))))
+                (declare (ignorable month day hour minute second))
+                (if (null month)
+                    (encode-universal-time 0 0 0 1 1 year)
+                    (if (null day)
+                        (encode-universal-time 0 0 0 1 month year)
+                        (if (null hour)
+                            (encode-universal-time 0 0 0 day month year)
+                            (encode-universal-time second minute hour day month year))))))
+
+(defun parse-mini-date (date)
+  (declare (string date))
+  (values (parse 'minidate date)
+          date))
+
+(defun print-mini-date (date))
+
+(defun mini-date-stamp ())