[Django]-How can I get the timezone aware date in django?

65đź‘Ť

âś…

It’s not clear whether you’re trying to end up with a date object or a datetime object, as Python doesn’t have the concept of a “timezone aware date”.

To get a date object corresponding to the current time in the current time zone, you’d use:

# All versions of Django
from django.utils.timezone import localtime, now
localtime(now()).date()

# Django 1.11 and higher
from django.utils.timezone import localdate
localdate()

That is: you’re getting the current timezone-aware datetime in UTC; you’re converting it to the local time zone (i.e. TIME_ZONE); and then taking the date from that.

If you want to get a datetime object corresponding to 00:00:00 on the current date in the current time zone, you’d use:

# All versions of Django
localtime(now()).replace(hour=0, minute=0, second=0, microsecond=0)

# Django 1.11 and higher
localtime().replace(hour=0, minute=0, second=0, microsecond=0)

Based on this and your other question, I think you’re getting confused by the Delorean package. I suggest sticking with Django’s and Python’s datetime functionality.

Leave a comment