Функция get_current_timezone

Функция get_current_timezone возвращает объект текущей временной зоны, которая активна в данный момент. Эта функция полезна, когда нужно узнать, какая временная зона используется в текущем контексте - будь то глобальная настройка TIME_ZONE или временная зона, установленная для конкретного запроса через activate. Функция не принимает аргументов и возвращает объект типа datetime.tzinfo.

Синтаксис

pythonfrom django.utils import timezone

current_tz = timezone.get_current_timezone()

Пример . Использование

Рассмотрим базовый пример получения текущей временной зоны при стандартных настройках Django:

pythonfrom 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}")

Результат выполнения кода:

python"Current timezone: UTC"
"Current time in UTC: 2026-01-15 10:30:45.123456+00:00"

Пример . С активацией другой временной зоны

Функция get_current_timezone учитывает временную зону, активированную через activate для текущего запроса:

pythonfrom 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}")

Результат выполнения кода:

python"Active timezone: Europe/Moscow"
"Current time in Moscow: 2026-01-15 13:30:45.123456+03:00"
"Default timezone: UTC"

Использование в представлениях

Покажем, как использовать функцию внутри представления Django для вывода времени с учётом временной зоны пользователя:

pythonfrom 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 для преобразования времени:

pythonfrom 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}")

Результат выполнения кода:

python"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,
    которая преобразует время в активную временную зону