Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-08-18

KMRCLを眺める(189) PRETTY-DATE

| 21:28 | KMRCLを眺める(189) PRETTY-DATE - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(189) PRETTY-DATE - わだばLisperになる

前回で、impl.lispも眺め終わったので続いて、datetime.lispを眺めます。

ということで今回は、KMRCLのdatetime.lispからPRETTY-DATEです。

定義は、

(defun pretty-date (year month day &optional (hour 12) (m 0) (s 0))
  (multiple-value-bind (sec min hr dy mn yr wkday)
    (decode-universal-time
     (encode-universal-time s m hour day month year))
    (values (elt '("Monday" "Tuesday" "Wednesday" "Thursday"
                   "Friday" "Saturday" "Sunday")
                 wkday)
            (elt '("January" "February" "March" "April" "May" "June"
                   "July" "August" "September" "October" "November"
                   "December")
                 (1- mn))
            (format nil "~A" dy)
            (format nil "~A" yr)
            (format nil "~2,'0D:~2,'0D:~2,'0D" hr min sec))))

となっていますが、与えられた年月日から曜日や月名を多値で返すもののようです。

(KL:PRETTY-DATE 2010 8 18)
;⇒ "Wednesday"
    "August"
    "18"
    "2010"
    "12:00:00"

(APPLY #'KL:PRETTY-DATE
       (CDDDR
        (REVERSE
         (MULTIPLE-VALUE-LIST
          (DECODE-UNIVERSAL-TIME
           (GET-UNIVERSAL-TIME))))))
;⇒ "Wednesday"
    "August"
    "18"
    "2010"
    "21:05:12"

ちょっとした時に便利かもしれません。