MYSQLに保存されるときはUTCで保存されて、取り出したときににDjangoで日本時間に変換されるという認識でいい?

2024年6月13日

はい、基本的にはそのような仕組みです。

Djangoでは、デフォルトでUTC時間で時刻が保存されます。つまり、モデルのDateTimeFieldに保存された時刻は、データベースにUTC時間として保存されます。

しかし、DjangoはTIME_ZONE設定に基づいて、データベースから取得した時刻をローカルのタイムゾーンに変換します。したがって、DateTimeFieldから取得した時刻は、Djangoが設定されたタイムゾーンに従って変換されます。

例えば、settings.pyTIME_ZONE = 'Asia/Tokyo'を設定している場合、データベースから取得した時刻は自動的に日本時間に変換されます。そのため、Djangoアプリケーション内で日本時間を扱うことができます。

ただし、この挙動はデフォルトであり、必要に応じて変更することも可能です。 Djangoの設定やモデルのフィールド設定を変更することで、別の動作を実現することもできます。

未分類

Posted by ぼっち