4

djangoのドキュメントでは、設定で提供されるTIME_ZONEに日時オブジェクトをいつでも保存できると書かれています。

時間認識オブジェクトの日付を記入するだけで十分ですか、それともTIME_ZONE設定に変換する必要がありますか?つまり、私のTIME_ZONE = "America/Los_Angeles"およびUSE_TZ=Trueで、 "UTC"にあるタイムゾーン対応オブジェクトを保存しようとすると、それは機能しますか?つまり、djangoは、dbに保存する前に、その「UTC」タイムゾーンオブジェクトを「America / Los_Angeles」に変換しますか?

4

1 に答える 1

8

USE_TZ = Truedjangoを使用すると、UTCですべてがDBに保存されると思います。すべてのDateTimeオブジェクトは、保存するためにタイムゾーンを認識している必要があります。djangoがデータベースから日時を取得すると、UTCから設定で指定されたタイムゾーンの認識時刻に自動的に変更さTIME_ZONEれます。

したがって、質問に答えるために、UTCでタイムゾーンを認識している日時(たとえば19:00)があり、それを保存すると、DBに19:00として保存されます。取得すると、djangoは「America / Los_angelos」でTZを認識させるため、日時は12:00になります。

呼び出して、設定の内容から現在のタイムゾーン設定を上書きすることもできます

from django.utils import timezone
timezone.activate('US/Central')
于 2012-04-09T19:57:33.797 に答える