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で設定がうまくいっているか確認すると思うので、ターミナルで設定するのがよさそう。
