【Rails】Railsの基準時刻(タイムゾーン)について

はじめに

 日本とアメリカに時差があるように、国や地域ごとで基準時刻というものが違います。日本で使われている時間は「日本標準時(JST)」と呼ばれています。Railsでは、デフォルトで協定世界時(UTC)」の時間で設定されているので、日本で使用するアプリの場合不便です。したがって、その基準時刻の変更方法について記していきます。

設定方法

 Railsタイムゾーンはconfig/application.rbで簡単に設定できます。ですが、ここで注意していただきたいのが、「アプリケーション側の基準時刻と、DB側の基準時刻とは別の概念である」と言うことです。例えば、アプリケーション側が日本時刻(=JST)の10:00と言うデータを保持しており、それをDBに保存しようとした際に、もしDBの基準時刻が協定世界時(=UTC)に設定されていたとすると、DBには、1:00(UTC)という形で保存されてしまうのです。これを防ぐために、アプリケーション作成の最初の段階で、Railsの基準時刻と、DB側の基準時刻を合わせる必要があります。

# config/application.rb

config.time_zone = "Tokyo" #アプリ側
config.active_record.default_timezone = :local #DBから受け取った時刻をどのタイムゾーンとして解釈するか