8170


例えば下記のようにerb上に書くとGMTで表示されるかと思いますが、コレを2015年3月4日10:30みたいなフォーマットにしたい場合はどうすればいいでしょうか  
`<%= comment.created_at %>`


CC BY-SA 3.0
2015-03-20T02:13:24.503
8161
2015-03-20T05:32:17.993
525
question
ruby ruby-on-rails erb
created_atのタイムゾーンとフォーマットを変換する


`strftime`を利用します。

[code]

    <%= comment.created_at.strftime('%Y年%m月%d日 %H:%M') %>
    
[/code]


CC BY-SA 3.0
2015-03-20T02:17:59.410
8162
2015-03-20T02:17:59.410
8351
8161
answer


`strftime`を使うと、毎回書式文字列を指定しなければなりません。  
なので、書式文字列は`ja.yml`に書いて、`I18n.l`メソッド（Viewの中では`l`だけで呼び出せる）を使うのがベターだと思います。

[code]

    # config/locales/ja.yml
    ja:
      time:
        formats:
          default: ! '%Y/%m/%d'
          long: ! '%Y年%m月%d日(%a) %H時%M分%S秒 %z'
          short: ! '%Y年%m月%d日 %H:%M'
    
[/code]

[code]

    # view
    <%= l comment.created_at, format: :short %>
    
[/code]

[code]

    # config/application.rb
    config.time_zone = 'Tokyo'
    config.i18n.default_locale = :ja
    
[/code]

このあたりの仕組みを詳しく知りたい場合はRailsガイドを読んでみてください。

<http://railsguides.jp/i18n.html>


CC BY-SA 3.0
2015-03-20T05:32:17.993
8170
2015-03-20T05:32:17.993
85
8161
answer