Timezone.now() vs datetime.datetime.now()
Just always use timezone.now()
. Django now has timezone support which requires timezone 'aware' datetime objects. datetime.now()
will return a timezone naive object, whereas timezone.now()
will return a timezone aware object.
Read more about Django timezones
You can write in shell, for example:
timezone.datetime.now() < timezone.now()
And the error message is:
TypeError: can't compare offset-naive and offset-aware datetimes
They are different objects, only timezone.now() have UTC support
If you want to use UTC, and you're using Python 3.2 or higher, this answer says you can do:
import datetime
datetime.datetime.now(datetime.timezone.utc)
This will give you a timezone-aware UTC datetime.