Time.parse理解せずに使ってハマった話

Time.parse よく分からずに使ってると入力した時間と9時間差があるデータがDBに保存された。

Time.parse('2022-09-25 00:00:00')

Time.parse は、Ruby標準のTimeクラスのメソッドで、システムのタイムゾーン、または環境変数の TZ に指定されたタイムゾーンで日時を生成する。

開発環境では何も設定をいじってなかったので、デフォルトのUTCになってた。

Time.zone.parse を使う様にすると、application.rb 等の config.time_zone に設定されたタイムゾーンで日時が生成されるので無事解決。

Time.zone.parse('2022-09-25 00:00:00')
# => 2022-05-15 00:00:00 +0900

参考:https://zenn.dev/k_kind/articles/1538aac0efcf17