2017-04-19 11 views
0

私はタイムゾーンはジャンゴでどのように機能するかを理解するのに苦労を抱えているので、私はdjango/utils/timezone.pyにソースコードを見て、私は次のコードが見つかりました:Djangoのタイムゾーンが今、何が欠けていますか?

def now(): 
    """ 
    Returns an aware or naive datetime.datetime, depending on settings.USE_TZ. 
    """ 
    if settings.USE_TZ: 
     # timeit shows that datetime.now(tz=utc) is 24% slower 
     return datetime.utcnow().replace(tzinfo=utc) 
    else: 
     return datetime.now() 

を私は本当に、なぜ提供tzinfoのを理解していませんsettings.pyのTIME_ZONEに依存しません。

代わりにそのようなものにしてはいけませんか?

return datetime.utcnow().replace(tzinfo=get_default_timezone()) 

このようにtimezone.now()は本当にタイムゾーンを認識しますか?

答えて

1

USE_TZが有効な場合、DjangoはすべてのdatetimesをUTCで保存し、TIME_ZONE設定を使用して保存されたタイムゾーンを表示します。 Djangoのtimezone docsから

タイムゾーンのサポートを有効にすると、Djangoの店がデータベースにUTCに 情報をDATETIME、 オブジェクト内部でタイムゾーンを意識した日時を使用し、それらを変換します最終的なユーザーのタイムゾーンは テンプレートとフォームです。

+0

"DjangoはすべてのdatetimesをUTCに格納します"。これは正確ではありません。 Django doesn; tはいつもそれを指してくれてありがとう –

+1

@MihaiZamfir。私は答えを更新しました。 – v1k45

+0

ソースコードからは、UTCクラスがダミーの "Return 0 offset"のように見えましたが、今はそれを得ていると思います! – Nezo

関連する問題