Heroku - タイムゾーンを日本に設定する
Herokuのタイムゾーン設定方法
一言でいうと
$ heroku config:add TZ=Asia/Tokyo --app [app-name]
で設定可能。
サーバの現在時刻を調べる
HerokuはデフォルトでタイムゾーンはAsia/Tokyoではない(リージョンはUnited Statesの場合)
コンソールを立ち上げて確認してみる(heroku run console
)。
$ heroku run console --app hoge-app Running console on ⬢ hoge-app... up, run.1087 (Free) Loading production environment (Rails 4.2.7) irb(main):001:0> Time.now => 2017-03-25 04:13:28 +0000 irb(main):002:0> exit
なお、Herokuで作成しているアプリが一つしかない場合は--app
オプションは必要ないが、複数ある場合は一意に特定して実行するために--app [app-name]
という感じで指定してあげている。
日本時間は現在13時頃だが、2017-03-25 04:13:28 +0000
となっている。
サーバのタイムゾーンを設定する
$ heroku config:add TZ=Asia/Tokyo --app hoge-app Setting TZ and restarting ⬢ hoge-app... done, v35 TZ: Asia/Tokyo
TZ
という環境変数にAsia:Tokyo
を設定することで、タイムゾーンが日本になる。
設定が反映されているか確認してみる。
$ heroku run console --app hoge-app Running console on ⬢ hoge-app... up, run.2172 (Free) Loading production environment (Rails 4.2.7) irb(main):001:0> Time.now => 2017-03-25 13:14:20 +0900 irb(main):002:0> exit
日本での現在時刻と一致していることが分かる。
以上です。
追記: ブラウザで設定する
下記リンクのアプリ設定画面にてConfig Variables
からReveal Config Vars
をクリックすることで、環境変数を管理できます。
https://dashboard.heroku.com/apps/[app name]/settings
ターミナルと同様に、TZ
という環境変数にAsia:Tokyo
を設定すれば良いです。
あれですね、$ heroku config:add TZ=Asia/Tokyo
とこのブラウザで設定するのは同じ動作ということです。ブラウザ上で設定しても、heroku run console
で設定がうまくいっているか確認すると思うので、ターミナルで設定するのがよさそう。