|
@@ -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 ())
|