diff --git a/dave_kohei/convert_er.rb b/dave_kohei/convert_er.rb new file mode 100644 index 0000000..a34956e --- /dev/null +++ b/dave_kohei/convert_er.rb @@ -0,0 +1,23 @@ +#coding:utf-8 +require 'date' + +class EraConverter + def self.convert(source_date) + parsed_date = DateTime.parse(source_date) + "#{self.era_from_date(parsed_date)}#{parsed_date.mon}月#{parsed_date.mday}日" + end + + def self.era_from_date(source_date) + eras = [{ :start => Date.new(1989,1,8), :string => "平成" }, + { :start => Date.new(1926,12,25), :string => "昭和" }, + { :start => Date.new(1912,7,30), :string => "大正" }, + { :start => Date.new(1868,9,8), :string => "明治" } ] + + eras.each do |e| + if source_date >= e[:start] + year_string = source_date.year - (e[:start].year - 1) + return "#{e[:string]}#{year_string == 1 ? '元' : year_string}年" + end + end + end +end \ No newline at end of file diff --git a/dave_kohei/test_era.rb b/dave_kohei/test_era.rb new file mode 100644 index 0000000..c561fad --- /dev/null +++ b/dave_kohei/test_era.rb @@ -0,0 +1,25 @@ +#coding:utf-8 + +require "minitest/autorun" +require_relative "convert_er" +require 'date' + +class TestEra < MiniTest::Unit::TestCase + def test_gets_era + #assert_equal "平成元年", EraConverter.era_from_date(Date.new(1989,1,8)) + assert_equal "平成24年", EraConverter.era_from_date(Date.new(2012,1,8)) + assert_equal "昭和54年", EraConverter.era_from_date(Date.new(1979,12,25)) + assert_equal "大正2年", EraConverter.era_from_date(Date.new(1913,7,30)) + assert_equal "明治11年", EraConverter.era_from_date(Date.new(1878,9,7)) + end + + def test_raise_on_unmat + assert_equal "平成24年10月20日",EraConverter.convert('2012-10-20') + assert_equal "昭和64年1月7日",EraConverter.convert('1989-1-7') + assert_equal "平成元年1月8日",EraConverter.convert('1989-1-8') + #assert_equal "昭和54年12月25日", EraConverter.era_from_date(Date.new(1979,12,25)) + #assert_equal "大正2年", EraConverter.era_from_date(Date.new(1913,7,30)) + #assert_equal "明治11年", EraConverter.era_from_date(Date.new(1878,9,7)) + + end +end \ No newline at end of file