@テク野路ジーロード

配信タグシェアリングシステムpickvyを開発、運営開始。最近は、Googleアナリティクスを研究中

テーブルに現在日時を登録する際に、日本時間をデフォルトで入力させる設定

Railsで、テーブルへ現在日時を登録する際に、なぜかUTC時間に
なっていたので、より良い設定方法を調査。


まずモデル経由で現在日時を登録する際、例えば以下の文を書いていました。

                transfer = Transfer.new
                transfer.tid  = targetId
                transfer.flag = 1
                transfer.entry_date = Time.zone.now()
                transfer.update_date = Time.zone.now()
                transfer.save

(created_atとかupdate_atを使えばいいじゃないかというご指摘もあるかと
   思いますが、こういう体でお願いします)

さて、この場合、なぜか、UTC時間が登録されてしまい、上手く行かない。
9時間ずれてしまっていた。

諸処調査の結果、以下の対処で解決

application.rb内のプロジェクト配下に以下を追記

    config.time_zone = 'Tokyo'
    config.active_record.default_timezone = :local

タイムゾーン指定名は’Asia/Tokyo’じゃないかということを書いてある記事も
どこかで見かけた気がするけど、上記が正解だった(私の環境では。Rails4です)

 

【参考文献】
RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita
あともう一つあった気がするけど、思い出したら追記しておきます。