タイムゾーンの設定を日本にする

タイムゾーンの設定を日本にする

今回のissueはタイムゾーンの設定を日本にするというものです。

(config/application.rb)

module Mapblog
  class Application < Rails::Application
    # (省略)

    # 以下の2行を追加
    config.time_zone = 'Tokyo'
    config.active_record.default_timezone = :local

    # (省略)
  end
end

これでタイムゾーンが日本に設定されました。

この記述に関して解説します。

config.active_record.default_timezone

config.active_record.default_timezoneはDBへの書き込みに関する記述です。 例えば2020-03-19 01:23:45(JST)という値をDBに書き込もうとしています。 この値はどのタイムゾーンとして解釈してDBに書き込みをするか、というのをここの記載の指示に従います。

デフォルトでは:utcとなります。JSTUTCから+0900の時差があるので、デフォルトでUTCに変換されて2020-03-18 16:23:45がDBに書き込まれます。

:localはDBのサーバのタイムゾーンが適応されます。ここでは:local(JST)を指定したので、JSTとして2020-03-19 01:23:45がDBに保存されます。

config.time_zone

config.time_zoneは画面表示に関する記述です。デフォルトではUTCとなります。

ところで、config.active_record.default_timezoneでは:localを指定しました。 DBの2020-03-19 01:23:45という値は、JSTとして解釈されています。 config.time_zone = 'Tokyo'としたので、画面にもそのまま2020-03-19 01:23:45が表示されます。