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`を利用します。

```

    <%= comment.created_at.strftime('%Y年%m月%d日 %H:%M') %>
    
```
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`だけで呼び出せる）を使うのがベターだと思います。

```

    # 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'
    
```

```

    # view
    <%= l comment.created_at, format: :short %>
    
```

```

    # config/application.rb
    config.time_zone = 'Tokyo'
    config.i18n.default_locale = :ja
    
```

このあたりの仕組みを詳しく知りたい場合は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