1. ホーム
  2. Django

django store to databaseは現地時間より8時間短い?(2021-05-12更新)

2022-03-02 05:52:02
<パス

djangoのデータベースへの保存は、現地時間より8時間短い?

著者は、以前のバージョンの Django ではタイムゾーンの制限はなかったはずで、データベースに保存されるのは通常ローカルタイムだと推測しています。
Django でデータベースに保存される時刻は常に UTC です。このとき、settings が

TIME_ZONE = 'UTC'
USE_TZ = True


datetime.datetime.now() で取得した時刻は、Django によって UTC 時刻としてデータベースに保存されます。もし、この設定を

TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True


再び datetime.datetime.now() を使って時間を取得すると、 django はこの時間を東部8時間として扱いますが、 jango はこの時間をデータベースに保存されている UTC 時間に変換して、時刻を読み取ったり、直接 UTC 時間に従って読み出したりします。

テンプレート表示時間

USE_TZ=True、TIME_ZONE='Asia/Shanghai'を設定すると、データベースにはUTC時間が格納されていても、TIME_ZONEに示されたローカルタイムで表示されます。

ご提案

時間の統一を図るため、開発時にはUTC時間を使用するようにした方がよい。

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True


時間を取得する場合、 django.util.timezone.now() を使用することができます。これは、必要な UTC 時間を満たすためと、ページが正しい時間を表示するために使用されます。

最新の

今回は、Web上で設定する新しい方法を見つけたので、AdvancedからserverTimezoneを探す必要はないのですが
つまり、URLの後に

  • <入力 サーバータイムゾーン=GMT%2B8