saws #5255(2008/01/09 11:05 GMT) [ Ruby ] Rating0/0=0.00
お題のサンプル出力では元年は前年号の最終年と併記していますが, 1年を元年としたことが同義だと考えてその記述は省略しました.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
require 'date' require 'kconv' WAREKI = [['明治', '1868/9/8'], ['大正', '1912/7/30'], ['昭和', '1926/12/25'], ['平成', '1989/1/8']] DATES = %w('1868/12/2' '1926/12/24' '2007/12/01' '1926/12/25' '1868/1/2' '1868/100/2') wareki = WAREKI.sort{|a, b| -1*(Date.parse(a[1]).year <=> Date.parse(b[1]).year) } # => 新しい年代からマッチさせるためにソート DATES.each{|date_str| begin date = Date.parse(date_str) y0, m0, d0 = date.year, date.month, date.day era = wareki.each{|nengo, date_str| date = Date.parse(date_str) y1, m1, d1 = date.year, date.month, date.day evaluation = y0 >= y1 && (m0 > m1 or m0 == m1 && d0 >= d1) break [nengo, y0 - y1] if evaluation } puts "#{era[0]}#{era[1] == 0 ? '元' : era[1] + 1}年#{m0}月#{d0}日".tosjis rescue puts '範囲外'.tosjis next end }
Rating0/0=0.00-0+
[ reply ]
saws
#5255()
[
Ruby
]
Rating0/0=0.00
お題のサンプル出力では元年は前年号の最終年と併記していますが, 1年を元年としたことが同義だと考えてその記述は省略しました.
Rating0/0=0.00-0+
[ reply ]