UbuntuとMySQLとDjangoの時間の設定についてです。
Ubuntuのタイムゾーン確認
ターミナルから $ timedatectl コマンドで時間を確認してみます。
0 1 2 3 4 5 6 7 8 9 |
$ timedatectl Local time: Sat 2024-03-02 07:18:01 UTC Universal time: Sat 2024-03-02 07:18:01 UTC RTC time: Sat 2024-03-02 07:18:01 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no |
サーバーのタイムゾーンを「Asia/Tokyo」にします。
0 1 2 |
sudo timedatectl set-timezone Asia/Tokyo |
再度確認します。
0 1 2 3 4 5 6 7 8 9 |
$ timedatectl Local time: Sat 2024-03-02 16:57:24 JST Universal time: Sat 2024-03-02 07:57:24 UTC RTC time: Sat 2024-03-02 07:57:23 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no |
Djangonoタイムゾーン確認
0 1 2 3 4 5 6 7 8 9 10 |
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Tokyo' USE_I18N = True USE_L10N = True USE_TZ = True |
TIME_ZONEは 「Asia/Tokyo」になっていますが、Djangoのtimezone.now()でMySQLにデータを登録してみると「Etc/UTC (UTC, +0000)」の時刻になってしまいます。
この状態だとDjango上での表記は日本時間になりますが、DBに登録される値はUTCになるそうです。
DBも日本時間にしたい場合は上記「 setting.py」 の「USE_TZ = True」を「USE_TZ = False」に変更します。これで完全日本時間環境の出来上がりです。