和暦 西暦

某編集をしていて,腐るほどたくさん和暦を西暦にする赤字が入っていて嫌になったので,(平成と昭和のみの対応ですが,)何も考えなくても和暦を西暦へ変換する elisp を考えてみました.せっかくなんで,その逆も作ってみました.

とは言っても,query-replace-regexp で使うためにその場で考えたので,何の変哲もない lisp です.

\(昭和\|平成\)\([0-9]\{1,2\}\)
\,(if (equal \1 "昭和") 
    (+ 1900 (string-to-number \2) 25) 
    (+ 2000 (- (string-to-number \2) 12))
  )

\([12][0-9]\{3\}\)
\,(if (>= (string-to-number \1) 1989) 
    (concat "平成" (number-to-string (- (string-to-number \1) 1988))) 
    (concat "昭和" (number-to-string (- (string-to-number \1) 1925)))
  )