Laravel開発、日本時間でDBに記録する
前回の記事にてDBに情報を保存する手段を追加したのですが、保存データのタイムスタンプが日本時間になっていないままでした。
今回は、こちらの時刻標記を修正して日本時間で表示させていきます。
今回の目的
時刻表示を日本時間で行う
なぜやるか
日本向けサービスとして実装しているので、日本時間標記を標準にしたい
やりたいこと
DBに記録するデータのタイムスタンプを日本時間で記録する
やったこと
PHPで扱う時刻を日本時間に修正する
PHPで設定した状態を確認する
キャッシュをクリアして最新の設定状況を適用する
実施内容
コンフィグ設定を修正する
時間設定を日本時間に変更する
コンフィグファイル内のタイムゾーン設定をなおします。
# ~/config/app.php
'timezone' => 'UTC',
↓
'timezone' => 'Asia/Tokyo',
と、これだけで日本時間になおるらしいのですが直りませんでした…。
設定が反映されているか確認する
ここから、原因調査をします。
まず、設定変更が適用されているかの確認手段をさがしていました。
そのなかでこちらを参考にさせて頂きました、ありがとうございます。
trueman-developer.blogspot.com
PHPの設定が確認できるinfo画面があるようです。
ルーティング設定することでブラウザで確認できるので、実際の情報をみてみました。
# アプリのdate情報
Default timezoneが"UTC"となっています、つまり最初のconfig設定の"UTC"から変更されていません。既に変更したにもかかわらず。
他の設定環境でも同じか確認する
原因探りの為、現在のアプリではなくAPIの仕組みを理解するときに使っていた別のアプリで同じ設定をし、確認することにしました。
こちらも同じく"UTC"設定だった為、上記同様timezoneの設定を変更。
そして、info画面のルートを設定して表示確認。
こちらは"Asia/Tokyo"に変化。
設定する所は合っているようだが、現在作成のアプリは"Asia/Tokyo"とアプリ設定しているにもかかわらず"UTC"のままになっていました。
キャッシュをクリアする
設定しているにもかかわらず変化しない状況について調べました、こちらを参考にさせて頂きました、ありがとうございます。
キャッシュ情報としてもっている設定が反映されており、設定変更データが反映されてい可能性があるため、上記サイトを参考にキャッシュクリアを実施しました。
$ php artisan config:cache
かわった…。
キャッシュ問題だったようです、設定変更時に反映されない場合はキャッシュを疑う必要もあるようですね。
これで新規登録等の作業をすれば、日本時間でDBに記録されました。