django 1.4 timezone.now() vs datetime.datetime.now()
According to timezone.now()
source:
def now(): """ Returns an aware or naive datetime.datetime, depending on settings.USE_TZ. """ if settings.USE_TZ: # timeit shows that datetime.now(tz=utc) is 24% slower return datetime.utcnow().replace(tzinfo=utc) else: return datetime.now()
It's based on utc
instead of your default timezone. You could achieve same value by using
now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone())print now.astimezone(timezone.utc)
Since Django 1.11 you can simply call django.utils.timezone.localtime
to fetch datetime
for your default timezone.
>>> from django.utils import timezone>>> timezone.localtime()
From docs:
Converts an aware datetime to a different time zone, by default the current time zone.
When value is omitted, it defaults to
now()
.This function doesn’t work on naive datetimes; use
make_aware()
instead.
You can pass a param to datetime.datetime.now()
:
import pytz, datetimeutc = pytz.utcutc_now = datetime.datetime.now(tz=utc)
Or use timezone
, a la:
from django.utils import timezonenow = timezone.now()
https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/