和暦(元号)変換クラス
program
|
comments(0) | 2010/05/13 23:45
rubyを勉強しています。練習で作成したものです。
#!/usr/bin/ruby -w
require 'date'
class WaDate < Date
GENGOU= {
1868 => {:full => '明治', :short => '明', :alpha => 'M'},
1912 => {:full => '大正', :short => '大', :alpha => 'T'},
1926 => {:full => '昭和', :short => '昭', :alpha => 'S'},
1989 => {:full => '平成', :short => '平', :alpha => 'H'}
}
def initialize(ajd=0, of=0, sg=ITALY)
super
@current_gengou = nil
end
def current_gengou
return @current_gengou if @current_gengou && @current_gengou[:year] == year
gengou_start_year = GENGOU.keys.sort.reverse.find do |start_year|
year > start_year
end
@current_gengou = {
:year => year,
:gengou_year => year - gengou_start_year + 1
}.merge(GENGOU[gengou_start_year])
end
def wa_year(style = nil)
style && gengou(style) + current_gengou[:gengou_year].to_s || current_gengou[:gengou_year]
end
def gengou(style)
current_gengou[style] || raise
end
end
date = WaDate.today # 2010-05-13
puts date.wa_year :full # '平成22'
puts date.gengou :alpha # 'H'
puts date.wa_year + 1 #=> 23