0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】Timeメソッドのフォーマット

Last updated at Posted at 2023-04-22

はじめに

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を省ける。

参考

【初心者向け・動画付き】Railsで日時をフォーマットするときはstrftimeよりも、lメソッドを使おう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?