よく使うフォーマットを定義する
アプリケーション内で Time.new.to_s
したときのフォーマットを指定できる。
対象としては、TimeクラスとDateクラス。
created_at.strftime('%Y/%m/%d %H:%M')
みたいなヘルパを大量に定義している場合、まとめて定義してしまったほうがいい。
定義したら、READMEなりナレッジなりに明記して周知すること。
定義先
config/initializers/time_formats.rb
などに定義するとよさそう。
余談だけど、Rails5からconfig/application.rb
にごちゃごちゃ書くのは非推奨になったので、アプリケーションに関連する定義は config/initializers/*.rb
に切り出すのが良い。
定義例
# date = Time.local(2009,12,24,15,30,27) Time::DATE_FORMATS[:default] = '%Y/%m/%d %H:%M' # "2009/12/24 15:30" Time::DATE_FORMATS[:datetime] = "%H:%M %d-%b-%Y" # date.to_s(:datetime) ----> 15:30 24-Dec-2009 Time::DATE_FORMATS[:date] = "%d-%b-%Y" # date.to_s(:date) ----> 24-Dec-2009 Time::DATE_FORMATS[:time] = "%H:%M" # date.to_s(:time) ----> 15:30 Time::DATE_FORMATS[:google] = "%Y-%m-%d %H:%M:%S" # date.to_s(:google) ----> 2009-12-24 15:30:27 # In rails, output of a date field uses Date::DATE_FORMATS[:default] Date::DATE_FORMATS[:default] = Time::DATE_FORMATS[:date] # To display the current date and time in all the formats in your current environment: Time::DATE_FORMATS.keys.each{|k| puts [k,Date.today.to_s(k)].join(':- ')} Time::DATE_FORMATS.keys.each{|k| puts [k,Time.now.to_s(k)].join(':- ')} # date.to_s(:date) #=> "2018年4月1日(日)" Time::DATE_FORMATS[:date] = ->(t) { t.strftime("%Y年%-m月%-d日(#{%w(日 月 火 水 木 金 土)[t.wday]})") }
参考
[日付/時間フォーマットのデフォルトを設定] (https://qiita.com/Vit-Symty/items/399c77d1fd681b77d593)