続・月の平日を数える
続・月の平日を数えるlisp
((lambda (oy om od ny nm nd) ;基点日付作成 (setq olddate (encode-universal-time 0 0 0 od om oy)) (setq newdate (encode-universal-time 0 0 0 nd nm ny)) ;初期値設定 (setq x od) (setq cnt 0) (setq cnt2 0) ;祝日取得 (setq holiday (make-vector 33)) ;無限ループ (loop ;日時設定 (setq date (encode-universal-time 0 0 0 x om oy)) (multiple-value-bind (dmy dmy dmy d m y) (decode-universal-time date) (ed::calendar-japanese-holiday y m holiday) (setq day d) ) ;月が替わったら終了 (if (> date newdate) (return) ) ;日付を進める (setq x (+ x 1)) ;日を出力 (cond ((typep (aref holiday day) 'string) (setq cnt (+ cnt 1))) ((equalp (format-date-string "%v" date ) "土") (setq cnt (+ cnt 1))) ((equalp (format-date-string "%v" date ) "日") (setq cnt (+ cnt 1))) (t (setq cnt2 (+ cnt2 1))) ) ) (insert (format nil "土日祝日:~D~%平日:~D~%" cnt cnt2)) ) 2010 12 15 2011 1 14) 土日祝日:14 平日:17 t
calendarex必須で、*calendar-japanese-holiday-list*に自社の休日も登録しとかないとあまり意味が無いです。
間違ってたから一回消して上げなおしたのは秘密