[mew-dist 29257] mew-time-rfc-to-sortkey() での year 補正

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2010年 6月 25日 (金) 13:34:22 JST


白井です。

古いフォルダのメールを整理して、Date で sort していたら

Date: Sat, 1 Jan 100 12:07:56 +0900

なメールを発見しました。本当は 2000年です。

どうせ(?) mew-time-rfc-to-sortkey() である程度は救っているので、
こんな感じにしてはどうでしょうでしょうか?

(defun mew-time-rfc-to-sortkey (s &optional tzadj)
  (if (string-match mew-time-rfc-regex s)
      (let ((year (mew-time-rfc-year))
	    (mon  (mew-time-mon-str-to-int (mew-time-rfc-mon)))
	    (day  (mew-time-rfc-day))
	    (hour (mew-time-rfc-hour))
	    (min  (mew-time-rfc-min))
	    (sec  (mew-time-rfc-sec))
	    (tmzn (mew-time-rfc-tmzn)))
	(cond
	 ((< year 50)
	  (setq year (+ year 2000)))
	 ((< year 150) ;; ここね
	  (setq year (+ year 1900))))
	(if (or (< year 1970) (>= year 2038))
	    ;; invalid data
	    (mew-time-ctz-to-sortkey-invalid sec min hour day mon year)
	  (setq sec (- sec tmzn))
	  (if tzadj (setq sec (+ sec (car (current-time-zone)))))
	  (mew-time-ctz-to-sortkey (encode-time sec min hour day mon year))))))


修正前:
(mew-time-rfc-to-sortkey "Sat, 1 Jan 100 12:07:56 +0900")
"01000101120756"

修正後:
(mew-time-rfc-to-sortkey "Sat, 1 Jan 100 12:07:56 +0900")
"20000101030756"


-- 
白井秀行 (mailto:shirai at example.com)


Mew-dist メーリングリストの案内