初期化
# config/initializers/datetime_formats.rb
Time::DATE_FORMATS[:default] = '%Y-%m-%d %H:%M:%S'
Time::DATE_FORMATS[:ja] = '%Y年%m月%d日 %H時%M分%S秒'
Date::DATE_FORMATS[:ja] = '%Y年%m月%d日'
# Proc や lambda も設定できる(以下は、月日を考慮しない特殊用途のもので汎用性はない)
Date::DATE_FORMATS[:era_year] = ->(d) { (d.year < 1989) ? ('S%02d' % (d.year - 1925)) : ('H%02d' % (d.year - 1988)) }
Date::DATE_FORMATS[:era] = lambda { |d| d.to_s(:era_year) + d.strftime('.%m.%d') }
使用
bin/rails c
> t = Time.new
=> 2016-07-09 07:22:02 +0900
> t.to_s
=> "2016-07-09 07:22:02"
> t.to_s(:ja)
=> "2016年07月09日 07時22分02秒"
> d = Date.new(2016, 7, 9)
=> Sat, 09 Jul 2016
irb(main):014:0> d.to_s
=> "2016-07-09"
> d.to_s(:ja)
=> "2016年07月09日"
> Date.new(1945, 8, 6).to_s(:era_year)
=> "S20"
> Date.new(1988, 12, 31).to_s(:era_year)
=> "S63"
> Date.new(1989, 1, 31).to_s(:era_year)
=> "H01"
>Date.new(1989, 1, 31).to_s(:era)
=> "H01.01.31"
参照
確認バージョン
- Rails 4.2.6
- ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]