[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 メーリングリストの案内