Railsのtime_zone
勉強会周りの記事をあと2つほど書く予定ですが、レポートで出力されている日付とユーザが入力する日付を日本時間として扱うためにいろいろ調べたのでそれをまとめておきます。
active_recordからDBにレコードを保存する際に使われるtime_zoneとアプリ側で使われるtime_zoneがあります。今回はアプリ側の設定で問題を解決します。
で、まずはtime_zoneをappに設定するには、設定ファイルの値を変更することになる。
デフォルトでは、application.rbにコメントアウトされている。
config.time_zone = 'Tokyo'にする。
```
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = 'Tokyo'
```
これによりTime.nowで現在の日本時間(ローカルタイム)がとれて、
JSTからUTCでは、9時間の時間差があるのであってそうですね。
```
Time.zone
=> #<ActiveSupport::TimeZone:0x007fe23d4ab4c0 @name="Tokyo", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Asia/Tokyo>, @current_period=nil>
irb(main):004:0> Time.now
=> 2014-01-17 22:15:11 +0900
=> 2014-01-17 13:15:13 UTC
```
この辺りの設定値を変える影響に関してはQiitaで記事がでていて、
http://qiita.com/semind/items/68341489a9c5149b815d
これが参考になると思います。開発環境はrailsのversion 3.xのようです。
こういった2次的資料がいやであれば、
http://guides.rubyonrails.org/active_support_core_extensions.html
サンプルコードもあるので、動作を直感的につかみやすいと思っています。