Railsで日付をいい感じ(スラッシュ区切り)に表示する

日付は日本だと /(スラッシュ)区切りが一般的なのでそのように表示したい。
しかし、RailsでDateオブジェクトやDateTimeオブジェクトを表示すると以下のような感じになってしまう。

1
2
3
4
5
pry(main)> Date.today.to_s
=> "2016-11-10"

pry(main)> DateTime.now.to_s
=> "2016-11-10T17:47:01+09:00"

strftimeメソッドで書式を指定すれば良いのだが、面倒だしイケてないように感じる。

Rails国際化APIのI18nにまさにというメソッドがあったので紹介する。
その名もlocalizeメソッドだ。
localizeメソッドはDateオブジェクトやDateTimeオブジェクトを現地のフォーマットに変換する。

1
2
3
4
5
pry(main)> I18n.localize(Date.today)
=> "2016/11/10"

pry(main)> I18n.localize(DateTime.now)
=> "2016/11/10 18:05:04"

ちなみにlocalizeの省略形で l というエイリアスが用意されている。

1
2
3
4
5
pry(main)> I18n.l(Date.today)
=> "2016/11/10"

pry(main)> I18n.l(DateTime.now)
=> "2016/11/10 18:07:24"