[mew-dist 22659] Re: mew年と曜日の変数名
OBATA Noboru
noboru at example.com
2002年 12月 22日 (日) 11:13:01 JST
小幡です。
> の事は知っています。これは、英語の曜日を和文に直しているだけで、英文の曜日が入っていないメールでは
> 空白になります。その為、年月日から曜日を計算しようと思いますが、年と月日の変数名が分からなく、
> lispが完成しません。変数名が分かれば完成すると思うのですが、それとももっと良い方法があれば
次のようなコードを書いて使っています。
(defun mew-scan-form-my-date ()
"A function to return a date, YY-DD-MM#, where # is a day of the week."
(let ((s (MEW-DATE)) yyyy mm dd)
(when (or (string= s "")
(not (string-match mew-time-rfc-regex s)))
(setq s (mew-time-ctz-to-rfc
(mew-file-get-time (mew-expand-folder (MEW-FLD) (MEW-NUM))))))
(if (not (string-match mew-time-rfc-regex s))
"??-??-?? "
(setq yyyy (mew-time-rfc-year)
mm (mew-time-mon-str-to-int (mew-time-rfc-mon))
dd (mew-time-rfc-day))
(cond
((< yyyy 50)
(setq yyyy (+ yyyy 2000)))
((< yyyy 200)
(setq yyyy (+ yyyy 1900))))
(format "%02d-%02d-%02d%s" (% yyyy 100) mm dd
(nth (string-to-number
(format-time-string "%w" (encode-time 0 0 0 dd mm yyyy)))
;;'("日" "月" "火" "水" "木" "金" "土")
;;'("Su" "Mo" "Tu" "We" "Th" "Fr" "Sa")
'("s" "m" "t" "w" "r" "f" "a")
)))))
この関数は、"02-12-22s" のような 9 文字の文字列を返すので、
(setq mew-scan-form
'(type (9 my-date) " " (5 time) " " (12 from) (-5 size) " " t (0 subj)))
のように設定して使います。
年月日 (yyyy, mm, dd) を取得して、
(string-to-number
(format-time-string "%w" (encode-time 0 0 0 dd mm yyyy)))
で曜日 0〜6 (日曜〜土曜) に変換しています。
参考になれば幸いです。
--
小幡 昇 (noboru at example.com)
Mew-dist メーリングリストの案内