Rails

2015-07-27, rails

RailsのTimeZone

TimeZoneに関してはしっかりポリシーを決めておかないとかなり面倒なことになりそうです。Qiitaの記事に詳しいですが、JST(日本標準時)一本で運用する場合ですら、MySQLとの絡みを考えると複雑です。むしろ、ここで無理にJSTに設定するよりもUTCに内部的に統一しておき、必要に応じてローカルタイムの表現に直すようにした方がよいのでは…という気もしてきましたが、一応JSTを使う場合の設定例を…(どっちやねん!という感じですみません)。

config/application.rb
  config.time_zone = 'Tokyo'
  config.active_record.default_timezone = :local

この状態でもまだ落とし穴があります。Timeクラスはシステムのタイムゾーンを考慮しますが、DateTimeはUTCでパースしてくれるんですねぇ。。

irb(main):001:0> Time.parse("2015-07-27 10:00:00")
=> 2015-07-27 10:00:00 +0900
irb(main):002:0> DateTime.parse("2015-07-27 10:00:00")
=> Mon, 27 Jul 2015 10:00:00 +0000

だけど、nowだとどっちもJSTになるんですねぇ。これってどういうポリシーなんでしょう?

irb(main):001:0> Time.now
=> 2015-07-27 15:59:05 +0900
irb(main):002:0> DateTime.now
=> Mon, 27 Jul 2015 15:59:03 +0900

参考URL

この記事は役に立ちましたか?