Итак, в моих настройках у меня есть следующие:Как работает часовой пояс Django?
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
TIME_ZONE = 'Europe/Copenhagen'
Однако, когда я выдаю:
timezone.now()
datetime.datetime(2015, 9, 26, 8, 47, 15, 862729, tzinfo=<UTC>)
И время на два часа позже.
Я читал документацию, и я мог видеть, что этот метод вызывает datetime.datetime(), и информация там правильная. Я мог видеть, что выход основан на переменной TIME_ZONE, которая настроена на мое текущее местоположение. Не должно ли timezone.now() получить правильное время TIME_ZONE?
Другой вопрос: получает ли datetime.datetime() информацию с сервера?
Я добавил timezone.now для своих моделей.py, чтобы штамповать время модификации в некоторых классах. Разве нет лучшего способа? –
Почему вы предлагаете использовать объект наивного datetime? Если 'USE_TZ = True', то' timezone.now(). Astimezone (timezone.get_current_timezone()) 'возвращает известный объект datetime в текущем часовом поясе. Хотя вам не нужно вызывать '.astimezone()' вручную; существует 'timezone.localtime()', который делает это для вас и соответствующего фильтра шаблонов ('localtime'), который вам также не нужно вызывать, если' USE_TZ = True' – jfs
@ J.F. Себастьян, отличный момент! Спасибо :) –