はじめに
Timeメソッドで時間を表示したい時、迷わないようにするためにメモとして残します。
日本語設定
Gemfileにgemを追加
Gemfile
gem 'rails-i18n'
gem 'i18n_generators'
config/application.rbにデフォルトを設定
config/application.rb
config.i18n.default_locale = :ja
config.time_zone = 'Asia/Tokyo'
config/locales/ja.ymlファイルを作成
$ bin/rails g i18n_locale ja
設定方法と呼び出し
ファイルが生成されると、中身はこのような形式になっています。
config/locales/ja.yml
ja:
time:
formats:
default: "%m月%d日(%a)"
short: "%m/%d %H:%M"
long: "%Y年%m月%d日 %H時%M分%S秒 %Z"
呼び出し方法は「lメソッド」で呼び出します。lメソッドは主に日付や時間などのフォーマットのローカライズに使用されます。
view
<%= l Time.now %> # => "04月22日(土)"
<%= l(Time.now, format: :short) %> # => "04/22 16:36"
<%= l(Time.now, format: :long) %> # => "2023年04月22日 16時36分41秒 JST"
view以外の場所ではI18n.l
で呼び出します。
I18n.l(Time.now)
日
"%d日" # => 22日
月・日
"%m月%d日" # => 04月22日
"%m/%d" # => 04/22
"%m-%d" # => 04-22
年・月・日
"%Y年%m月%d日" # => 2023年04月22日
"%Y/%m/%d" # => 2023/04/22
"%Y-%m-%d" # => 2023-04-22
年・月・日・曜日
"%Y年%m月%d日(%A)" # => 2023年04月22日(土)
"%Y/%m/%d(%A)" # => 2023/04/22(土)
"%Y-%m-%d(%A)" # => 2023-04-22(土)
年・月・日・時間
"%Y年%m月%d日 %H:%M:%S" # => 2023年04月22日 17:22:45
"%Y/%m/%d %H:%M:%S" # => 2023/04/22 17:22:45
"%Y-%m-%d %H:%M:%S" # => 2023-04-22 17:22:45
04月22日の、「0」を表示させないようにするには
-mオプションを指定する
config/locales/ja.yml
ja:
time:
formats:
default: "%-m月%d日(%a)"
view
<%= l Time.now %> # => "4月22日(土)"
Mysqlでは%-d
がサポートされていないため、%c
を使用することで0を省ける。