From db3fb5fd0a5127073a03533bc254a907780b3e2c Mon Sep 17 00:00:00 2001 From: Kohei Yasumura Date: Sun, 21 Oct 2012 17:09:02 +0900 Subject: [PATCH 1/3] first work --- dave_kohei/convert_er.rb | 30 ++++++++++++++++++++++++++++++ dave_kohei/test_era.rb | 24 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 dave_kohei/convert_er.rb create mode 100644 dave_kohei/test_era.rb diff --git a/dave_kohei/convert_er.rb b/dave_kohei/convert_er.rb new file mode 100644 index 0000000..4a33f07 --- /dev/null +++ b/dave_kohei/convert_er.rb @@ -0,0 +1,30 @@ +#coding:utf-8 +require 'date' + +#平成 => { :start_year => 1989, :end_year => DateTime.now.year } + +class EraConverter + def self.convert(source_date) + #year = source_date.split("-")[0] + #month = source_date.split("-")[1] + parsed_date = DateTime.parse(source_date) + "#{self.era_from_date(parsed_date)}#{parsed_date.mon}月#{parsed_date.mday}日" + #Date.new(source_date.split("-") + end + + def self.era_from_date(source_date) + heisei_start = Date.new(1989,1,8) + showa_start = Date.new(1926,12,25) + taisho_start = Date.new(1912,7,30) + meiji_start = Date.new(1868,9,8) + if source_date >= heisei_start + "平成#{source_date.year - (heisei_start.year - 1)}年" + elsif source_date >= showa_start + "昭和#{source_date.year - (showa_start.year - 1)}年" + elsif source_date >= taisho_start + "大正#{source_date.year - (taisho_start.year - 1)}年" + elsif source_date >= meiji_start + "明治#{source_date.year - (meiji_start.year - 1)}年" + 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..2e04287 --- /dev/null +++ b/dave_kohei/test_era.rb @@ -0,0 +1,24 @@ +#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 "昭和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 From 98359eb5681b49fcfbfa15af3f07cb577ef4e4b3 Mon Sep 17 00:00:00 2001 From: Kohei Yasumura Date: Sun, 21 Oct 2012 17:26:31 +0900 Subject: [PATCH 2/3] second works --- dave_kohei/convert_er.rb | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/dave_kohei/convert_er.rb b/dave_kohei/convert_er.rb index 4a33f07..5585da4 100644 --- a/dave_kohei/convert_er.rb +++ b/dave_kohei/convert_er.rb @@ -1,30 +1,22 @@ #coding:utf-8 require 'date' -#平成 => { :start_year => 1989, :end_year => DateTime.now.year } - class EraConverter def self.convert(source_date) - #year = source_date.split("-")[0] - #month = source_date.split("-")[1] parsed_date = DateTime.parse(source_date) "#{self.era_from_date(parsed_date)}#{parsed_date.mon}月#{parsed_date.mday}日" - #Date.new(source_date.split("-") end def self.era_from_date(source_date) - heisei_start = Date.new(1989,1,8) - showa_start = Date.new(1926,12,25) - taisho_start = Date.new(1912,7,30) - meiji_start = Date.new(1868,9,8) - if source_date >= heisei_start - "平成#{source_date.year - (heisei_start.year - 1)}年" - elsif source_date >= showa_start - "昭和#{source_date.year - (showa_start.year - 1)}年" - elsif source_date >= taisho_start - "大正#{source_date.year - (taisho_start.year - 1)}年" - elsif source_date >= meiji_start - "明治#{source_date.year - (meiji_start.year - 1)}年" + 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] + return "#{e[:string]}#{source_date.year - (e[:start].year - 1)}年" + end end end end \ No newline at end of file From 2c8c364f10a864d30db435c9e29f23da4c5d23ad Mon Sep 17 00:00:00 2001 From: Kohei Yasumura Date: Sun, 21 Oct 2012 17:30:59 +0900 Subject: [PATCH 3/3] 3rd works --- dave_kohei/convert_er.rb | 3 ++- dave_kohei/test_era.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dave_kohei/convert_er.rb b/dave_kohei/convert_er.rb index 5585da4..a34956e 100644 --- a/dave_kohei/convert_er.rb +++ b/dave_kohei/convert_er.rb @@ -15,7 +15,8 @@ def self.era_from_date(source_date) eras.each do |e| if source_date >= e[:start] - return "#{e[:string]}#{source_date.year - (e[:start].year - 1)}年" + year_string = source_date.year - (e[:start].year - 1) + return "#{e[:string]}#{year_string == 1 ? '元' : year_string}年" end end end diff --git a/dave_kohei/test_era.rb b/dave_kohei/test_era.rb index 2e04287..c561fad 100644 --- a/dave_kohei/test_era.rb +++ b/dave_kohei/test_era.rb @@ -16,6 +16,7 @@ def test_gets_era 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))