開発環境がローカルで、サーバーはAWSとかだったりすると起きる問題。
環境
rails (5.2.0)
事象
to_time
は環境のタイムゾーンで算出する。
to_i
とかすると顕著にわかる
▼JST環境
> "2018-6-1 20:00".to_time => 2018-06-01 20:00:00 +0900 > "2018-6-1 20:00".to_time.to_i => 1527850800
▼UTC環境
> "2018-6-1 20:00".to_time => 2018-06-01 20:00:00 +0000 > "2018-6-1 20:00".to_time.to_i => 1527883200
このように起こす文字列同じなのにずれてしまう
解決策
Railsには in_time_zone
があるのでそれを使うとRailsのタイムゾーンに準拠してくれるので、ぶれない。
▼JST環境
> "2018-6-1 20:00".in_time_zone => Fri, 01 Jun 2018 20:00:00 JST +09:00 > "2018-6-1 20:00".in_time_zone.to_i => 1527850800
▼UTC環境
> "2018-6-1 20:00".in_time_zone => Fri, 01 Jun 2018 20:00:00 JST +09:00 > "2018-6-1 20:00".in_time_zone.to_i => 1527850800
おなじになった。