Djangoのソースコード(選択した回答に表示されているように)は、次の概念を説明していますtimezone.now()
:
datetime.now()
タイムゾーン情報(「ナイーブ日時」)なしで(アクティブなタイムゾーンで!)現在の時刻を生成しますが、...
timezone.now()
常にタイムゾーン情報を含む現在時刻を UTC (!)で表示します。
これは一見イライラしますね、はい。アクティブなタイムゾーンの現在の時刻を取得することもできましたが、そうしませんでした。timezone.localtime(timezone.now())
必要なものを取得するために引き続き使用できます。
from django.utils import timezone
from datetime import datetime
timezone.get_current_timezone()
# <DstTzInfo 'Antarctica/McMurdo' LMT+11:39:00 STD>
datetime.now()
# datetime.datetime(2014, 8, 19, 20, 8, 8, 440959)
timezone.localtime(timezone.now())
# datetime.datetime(2014, 8, 19, 20, 8, 14, 889429, tzinfo=<DstTzInfo 'Antarctica/McMurdo' NZST+12:00:00 STD>)
timezone.now()
# datetime.datetime(2014, 8, 19, 8, 8, 22, 273529, tzinfo=<UTC>)
datetime.utcnow()
# datetime.datetime(2014, 8, 19, 8, 8, 29, 769312)
初心者や通常のユーザーにとってtimezone.localtime(timezone.now())
は、おそらく最も直感的です。タイムゾーン情報を保持する現地時間。