mc #5065(2007/12/31 00:19 GMT) [ Common Lisp ] Rating0/0=0.00
Date-Calcという同名のPerlのライブラリをCommon Lispで再現したものを 使用してみました。 ライブラリ機能のおまけで英仏独等々に対応させてみましたが、 日本語は対応していないという…。 (y-calendar 2008 7) ;7はイタリア(数字で指定だと色んな意味で紛らわしいかも) ;==> ; Gennaio 2008 ;Lun Mar Mer Gio Ven Sab Dom ; 1 2 3 4 5 6 ; 7 8 9 10 11 12 13 ; 14 15 16 17 18 19 20 ; 21 22 23 24 25 26 27 ; 28 29 30 31 ; ~~~
see: Date-Calc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
(defpackage :doukaku-119 (:use :cl :date-calc)) (in-package :doukaku-119) (defun y-calendar (y &optional (lang 1)) (do ((m 1 (1+ m)) (col 4)) ((> m 12)) (format t "~&~%~V:@<~A ~D~>~%~{~A~^ ~}~%" (* col 7) (get-month-name m lang) y (get-week-day-name-list lang (1- col))) (do ((d 1 (1+ d))) (nil) (let ((dow (day-of-week y m d)) (day (day-of-year y m d))) (when (= 1 d) (format t "~V,0T" (* col (1- dow)))) (if (zerop day) (return) (format t "~VD~:[ ~;~%~]" (1- col) d (= 7 dow))))))) (defun get-month-name (m &optional (lang 1)) (aref (gethash lang date-calc::month-to-text) m)) (defun get-week-day-name-list (&optional (lang 1) (shoten 3)) (map 'list (if shoten (lambda (name) (subseq name 0 shoten)) #'identity) (subseq (gethash lang date-calc::day-of-week-to-text) 1)))
Rating0/0=0.00-0+
[ reply ]
mc
#5065()
[
Common Lisp
]
Rating0/0=0.00
see: Date-Calc
(defpackage :doukaku-119 (:use :cl :date-calc)) (in-package :doukaku-119) (defun y-calendar (y &optional (lang 1)) (do ((m 1 (1+ m)) (col 4)) ((> m 12)) (format t "~&~%~V:@<~A ~D~>~%~{~A~^ ~}~%" (* col 7) (get-month-name m lang) y (get-week-day-name-list lang (1- col))) (do ((d 1 (1+ d))) (nil) (let ((dow (day-of-week y m d)) (day (day-of-year y m d))) (when (= 1 d) (format t "~V,0T" (* col (1- dow)))) (if (zerop day) (return) (format t "~VD~:[ ~;~%~]" (1- col) d (= 7 dow))))))) (defun get-month-name (m &optional (lang 1)) (aref (gethash lang date-calc::month-to-text) m)) (defun get-week-day-name-list (&optional (lang 1) (shoten 3)) (map 'list (if shoten (lambda (name) (subseq name 0 shoten)) #'identity) (subseq (gethash lang date-calc::day-of-week-to-text) 1)))Rating0/0=0.00-0+
[ reply ]