プロが教えるわが家の防犯対策術!

テーブルにcreated_at,updated_atにて自動保存された時間が
約8時間ほどずれてしまいます。

調べてみた結果、UNIX時間で保存されているようなのですが
回避方法が見つかりません。

どうすれば保存時間の同期がとれるでしょうか。

よろしくお願い致します。

A 回答 (2件)

\config\environment.rbのconfig.time_zoneの設定を確認してみてください。



デフォルトではタイムゾーンはUTCなので日本時間とは9時間ズレています。
Tokyoにしてもテーブルの型がタイムゾーン付の型になっていなければ、9時間ズレた値が登録されるだけなので、タイムゾーン付の型にした方がよいかもしれません。
(手元にMySQLがないので確認できていませんが、PostgreSQL8.3ではそうなります)

DBにローカルタイムで保存していいなら、config.time_zoneの行を削除すれば済みます。
    • good
    • 0
この回答へのお礼

返答が遅くなり申し訳ございません。

config.time_zoneをコメントアウトすることで解決しました。
ありがとうございました。

お礼日時:2009/09/18 19:21

Railsのバージョンが不明ですが、


DBにUTCで時間が記録されているかと思います。

その場合、デフォルトのタイムゾーンを日本向けに設定すればよいかと思います。

具体的には、
Time.zone = 'Asia/Tokyo'
を application_controller.rbに挿入してやる等の方法があります。

以下は、script/consoleでの実験です。

>> Hoge.first.created_at
=> Fri, 21 Aug 2009 23:22:53 UTC +00:00 # UTCになってる><;;
>> Hoge.first.created_at.localtime
=> Sat Aug 22 08:22:53 +0900 2009 # 一応、変換はできる
>> Time.zone = 'Asia/Tokyo' # タイムゾーンを設定してみた
=> "Asia/Tokyo"
>> Hoge.first.created_at
=> Sat, 22 Aug 2009 08:22:53 JST +09:00 # 日本時間で取れてる!
>> Hoge.first.created_at.localtime
=> Sat Aug 22 08:22:53 +0900 2009 # こちらも問題なし
    • good
    • 0
この回答へのお礼

なるほど。
そういったやり方もあるのですね。

参考にさせてもらいます。
ありがとうございました。

お礼日時:2009/09/18 19:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!