Timezone.now() vs datetime.datetime.now()
Когда я должен использовать django timezone.now()
и когда я должен использовать python datetime.datetime.now()
.
Например, в следующем INSERT
, что будет иметь больше смысла?
- Product.objects.create(title='Soap', date_added=datetime.datetime.now())
- Product.objects.create(title='Soap', date_added=timezone.now())
Есть ли практическое правило, когда следует использовать каждый из них?
Ответы
Ответ 1
Всегда используйте timezone.now()
. Теперь у Django есть поддержка часового пояса, для которой требуются временные объекты времени. datetime.now()
вернет наивный объект часового пояса, тогда как timezone.now()
вернет объект, имеющий информацию о часовом поясе.
Ответ 2
Вы можете написать в оболочке, например:
timezone.datetime.now() < timezone.now()
И сообщение об ошибке:
TypeError: can't compare offset-naive and offset-aware datetimes
Это разные объекты, только timezone.now() имеют поддержку UTC