Rails で t.datetime のカラムの初期化が地方時(LMT)になってしまう件
- ryosuke_sato
- 3207
- 0
- 0
- 0
色々書いたので、一から問題点を整理すると、 Rails で config.time_zone = 'Tokyo' を指定した時に【日本標準時(+0900)】になってほしい。 でも実際は【地方時(+0918)】として扱われている。
2013-09-23 02:43:04DBに保存するときにUTC で保存するか JST で保存するかは config.active_record.default_timezone = (:utc | :local) で指定可能らしいですが、一旦置いておきます。
2013-09-23 02:46:59上手くいかないのは migrate で t.datetime と定義したカラムについてでして、h = Hoge.new(foo: Time.local(2013, 09, 23, 2, 40)) で生成した時、(続く)
2013-09-23 02:51:34(続き) p h.foo # => Mon, 23 Sep 2013 02:40:00 LMT +0918 ってなってしまうのです。 本当は、 p h.foo # => Mon, 23 Sep 2013 02:40:00 JST +0900 となってほしい。
2013-09-23 02:52:24LMT って何だ?ってなって調べたら天文学で使う地方平時というものらしい。東京だと地方平時は +0918 だって。僕は+0900 が欲しいんだ(^q^) http://t.co/MmQHHsZ2AJ
2013-09-22 22:32:52ちなみに、form から f.datetime_select 経由で入力した値を保存すると、 Mon, 23 Sep 2013 02:40:00 JST +0900 ってなります。
2013-09-23 02:54:13ちなみに、 h = Hoge.new(foo: DateTime.new(2013, 09, 23, 2, 40)) も試しましたが、ダメでした。
2013-09-23 02:56:21どうしても分からなかったので、結局 migrate で t.time で型定義したら上手くいった。ただし、config.active_record.default_timezone = :local をちゃんと指定する必要があるみたい。 #rails
2013-09-23 02:37:16