サイト管理人Blog

cloudfreeで「さぁ始めましょう♪」

タイムゾーンに呪われる前に深入りしなかった

2024-01-02 記載
概要 : Laravelでタイムゾーンを設定する
Keyword : タイムゾーン, Laravel, Asia/Tokyo

Laravelの最低限の設定は.envファイルのみでよいと思っていましたが、config/app.phpも必要でした。

というのも開設した掲示板で、
Model
 $table->timestamps();
と定義したカラムが9時間ずれてしまうので。

ググっていたら「タイムゾーン呪いの書」
https://qiita.com/dmikurube/items/15899ec9de643e91497c
というのを知ってしまい、タイムゾーンの奥の深さを教えられました。
まぁそれはよいとして、ChatGPT君にきいて

Laravelのタイムスタンプ(timestamps)を正しいタイムゾーンで表示するためには、
Laravelの設定ファイルであるconfig/app.phpを使用して
タイムゾーンを設定することができます。
'timezone'という項目を探します。
おそらく'timezone' => 'UTC',のように設定されているかもしれません。
'timezone' => 'Asia/Tokyo',のように日本のタイムゾーンに設定します。

と教わりましたので、関係するところなどもあわせて修正。

    //'timezone' => 'UTC',
    'timezone' => 'Asia/Tokyo',

    //'locale' => 'en',
    'locale' => 'jp',

    //'fallback_locale' => 'en',
    'fallback_locale' => 'jp',

    //'faker_locale' => 'en_US',
    'faker_locale' => 'ja_JP',

で、あっさり9時間が補正されました。
過去書き込みの日付も。
ということはデータベースの内部データはUNIXタイムで、読み出し側が自身で補正するということですね。
MariaDB、PDO、Eloquent、Laravel-Model、Laravel-Controller
と多層のレイヤーが重なっているので、どこが地域時差補正を面倒みてくれるのかわかりません。これも考えはじめると奥が深そうです。

投稿へのコメントは コチラ(掲示板) へお願いします。

サイト管理人Blog