和暦をparse
和暦を扱うクラスはないのかなと以前書いたけど、調べたらあったっすよ。っていうか標準添付のtimeライブラリを使えばいいのね。以下テストケース
require 'time' def test_parse check_time(2006, 6, 24, 17, 36, 36, Time.parse("2006/6/24 17:36:36")) check_time(2006, 6, 24, 17, 36, 36, Time.parse("H18.6.24 17:36:36")) # スラッシュだと無理 # check_time(2006, 6, 24, 17, 36, 36, Time.parse("H18/6/24 17:36:36")) check_time(2006, 6, 24, 17, 36, 36, Time.parse("H18/6/24 17:36:36".tr('/', '.').upcase )) check_time(2006, 6, 24, 17, 36, 0, Time.parse("H18/6/24 17:36".tr('/', '.').upcase )) # 時間だけじゃ無理 # check_time(2006, 6, 24, 17, 0, 0, Time.parse("H18/6/24 17".tr('/', '.').upcase )) check_time(2006, 6, 24, 0, 0, 0, Time.parse("H18/6/24".tr('/', '.').upcase )) # 日がないと無理 # check_time(2006, 6, 1, 0, 0, 0, Time.parse("H18/6".tr('/', '.').upcase )) # # 間違った日付(6/31) check_time(2006, 7, 1, 0, 0, 0, Time.parse("H18/6/31".tr('/', '.').upcase )) # 間違った日付(6/32) # check_time(2006, 7, 2, 0, 0, 0, Time.parse("H18/6/32".tr('/', '.').upcase )) # 無茶な月 # check_time(2007, 1, 26, 0, 0, 0, Time.parse("H18/13/26".tr('/', '.').upcase )) # 間違った?年 check_time(1990, 7, 1, 0, 0, 0, Time.parse("S65/6/31".tr('/', '.').upcase )) check_time(2000, 7, 1, 0, 0, 0, Time.parse("S75/6/31".tr('/', '.').upcase )) end private def check_time( y, m, d, h, min, s , t ) assert_equal y, t.year assert_equal m, t.month assert_equal d, t.day assert_equal h, t.hour assert_equal min, t.min assert_equal s, t.sec end
6/31は7/1にしてくれるけど、6/32は7/2にしてくれませんでした。