Функция get_current_timezone
Функция get_current_timezone возвращает объект текущей временной зоны,
которая активна в данный момент. Эта функция полезна, когда нужно узнать,
какая временная зона используется в текущем контексте - будь то
глобальная настройка TIME_ZONE или временная зона,
установленная для конкретного запроса через activate.
Функция не принимает аргументов и возвращает объект типа datetime.tzinfo.
Синтаксис
from django.utils import timezone
current_tz = timezone.get_current_timezone()
Пример . Использование
Рассмотрим базовый пример получения текущей временной зоны при стандартных настройках Django:
from django.utils import timezone
current_tz = timezone.get_current_timezone()
print(f"Current timezone: {current_tz}")
now = timezone.now()
print(f"Current time in {current_tz}: {now}")
Результат выполнения кода:
"Current timezone: UTC"
"Current time in UTC: 2026-01-15 10:30:45.123456+00:00"
Пример . С активацией другой временной зоны
Функция get_current_timezone учитывает временную зону,
активированную через activate для текущего запроса:
from django.utils import timezone
timezone.activate('Europe/Moscow')
current_tz = timezone.get_current_timezone()
print(f"Active timezone: {current_tz}")
now = timezone.now()
print(f"Current time in Moscow: {now}")
timezone.deactivate()
default_tz = timezone.get_current_timezone()
print(f"Default timezone: {default_tz}")
Результат выполнения кода:
"Active timezone: Europe/Moscow"
"Current time in Moscow: 2026-01-15 13:30:45.123456+03:00"
"Default timezone: UTC"
Использование в представлениях
Покажем, как использовать функцию внутри представления Django для вывода времени с учётом временной зоны пользователя:
from django.shortcuts import render
from django.utils import timezone
from myapp.models import Article
def article_list(request):
timezone.activate(request.user.timezone)
current_tz = timezone.get_current_timezone()
articles = Article.objects.filter(
published_at__lte=timezone.now()
)
context = {
'articles': articles,
'current_timezone': current_tz,
}
return render(request, 'articles/list.html', context)
Сравнение с другими функциями
Функция get_current_timezone часто используется вместе
с другими функциями модуля timezone для преобразования времени:
from django.utils import timezone
from datetime import datetime
utc_time = datetime(2026, 1, 15, 10, 30, 0, tzinfo=timezone.utc)
timezone.activate('America/New_York')
local_time = timezone.localtime(utc_time)
current_tz = timezone.get_current_timezone()
print(f"Current timezone: {current_tz}")
print(f"UTC time: {utc_time}")
print(f"Local time: {local_time}")
Результат выполнения кода:
"Current timezone: America/New_York"
"UTC time: 2026-01-15 10:30:00+00:00"
"Local time: 2026-01-15 05:30:00-05:00"
Смотрите также
-
функция
activate,
которая устанавливает активную временную зону -
функция
deactivate,
которая отключает активную временную зону -
функция
now,
которая возвращает текущее время в активной временной зоне -
функция
localtime,
которая преобразует время в активную временную зону