Djangoのタイムゾーンサポートについてメモ。settings.USE_TZをTrueにすると有効になる。
試したのはPython 2.7, Django 1.6.2。
Django1.6だと、プロジェクト新規作成時のsettings.pyでUSE_TZはTrueに設定されている。(ドキュメントではデフォルトでは無効と書かれてることに注意。django.conf.global_settings.USE_TZはFalse)
settings.USE_TZがTrueのとき
タイムゾーンサポートが有効になっていると、django.utils.timezone.nowはtzinfoにsettings.TIME_ZONEで設定したタイムゾーンのオブジェクトが指定された現在日時(datetimeオブジェクト)を返す。
>>> import django.utils.timezone as timezone >>> timezone.now() datetime.datetime(2014, 3, 21, 9, 13, 1, 524030, tzinfo=<UTC>) >>> import datetime >>> datetime.datetime.now() datetime.datetime(2014, 3, 21, 9, 13, 6, 707124)
settings.USE_TZがFalseのとき
タイムゾーンサポートが無効だと、timezone.nowはtzinfoを指定しない現在日時を返す。
>>> import django.utils.timezone as timezone >>> timezone.now() datetime.datetime(2014, 3, 21, 9, 16, 14, 512043) >>> import datetime >>> datetime.datetime.now() datetime.datetime(2014, 3, 21, 9, 16, 31, 846247)