Функция localdate
Функция localdate преобразует объект datetime в объект date с учётом текущего активного часового пояса. Она особенно полезна, когда нужно получить дату из дата-времени, учитывая настройки временной зоны. Функция принимает один обязательный аргумент - объект datetime, и один необязательный - часовой пояс. Если часовой пояс не указан, используется текущий активный часовой пояс.
Синтаксис
from django.utils import timezone
res = timezone.localdate(value, timezone=None)
Пример
Преобразуем объект datetime в дату с учётом текущего часового пояса:
from django.utils import timezone
from datetime import datetime
dt = datetime(2025, 1, 15, 20, 30, 0)
res = timezone.localdate(dt)
print(res)
Результат выполнения кода:
"2025-01-15"
Пример
Преобразуем aware datetime (с часовым поясом) в дату с учётом указанного часового пояса:
from django.utils import timezone
import pytz
dt = timezone.datetime(2025, 1, 15, 20, 30, 0, tzinfo=pytz.UTC)
tz = pytz.timezone('Europe/Moscow')
res = timezone.localdate(dt, timezone=tz)
print(res)
Результат выполнения кода:
"2025-01-16"
Пример
Используем функцию localdate для фильтрации записей по дате в модели:
from django.utils import timezone
from myapp.models import Article
today = timezone.localdate(timezone.now())
todays_articles = Article.objects.filter(created_at__date=today)
for article in todays_articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
Смотрите также
-
функция
localtime,
которая преобразует datetime в текущий часовой пояс -
функция
now,
которая возвращает текущую дату и время -
функция
make_aware,
которая делает naive datetime aware -
функция
get_current_timezone,
которая возвращает текущий активный часовой пояс