РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
729 of 818 menu

Функция timezone.make_aware

Функция make_aware из модуля django.utils.timezone применяется для преобразования наивного объекта datetime в осознанный (timezone-aware). Она принимает наивный datetime и временную зону, а возвращает осознанный datetime с привязанной к нему информацией о временной зоне. Если временная зона не указана явно, используется текущая активная временная зона.

Функция может принимать необязательный параметр is_dst, который определяет поведение при переходе на летнее время. Если передано значение None, функция попытается автоматически определить правильный сдвиг, но в неоднозначных случаях может возникнуть ошибка.

Синтаксис

from django.utils import timezone aware_datetime = timezone.make_aware(naive_datetime, timezone=None, is_dst=None)

Пример . С текущей временной зоной

Давайте создадим наивный datetime и преобразуем его в осознанный с использованием текущей активной временной зоны:

from django.utils import timezone from datetime import datetime naive_dt = datetime(2025, 1, 15, 12, 0, 0) aware_dt = timezone.make_aware(naive_dt) print(aware_dt)

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

"2025-01-15 12:00:00+03:00"

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

Преобразуем наивный datetime в осознанный с явным указанием временной зоны America/New_York:

from django.utils import timezone from datetime import datetime import pytz naive_dt = datetime(2025, 6, 1, 15, 30, 0) new_york_tz = pytz.timezone('America/New_York') aware_dt = timezone.make_aware(naive_dt, new_york_tz) print(aware_dt)

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

"2025-06-01 15:30:00-04:00"

Пример . С параметром is_dst

В неоднозначные моменты перехода на летнее время параметр is_dst помогает определить, какой сдвиг использовать. Значение True означает летнее время, False - зимнее время:

from django.utils import timezone from datetime import datetime import pytz eastern_tz = pytz.timezone('America/New_York') ambiguous_dt = datetime(2025, 11, 2, 1, 30, 0) # Летнее время aware_dst = timezone.make_aware(ambiguous_dt, eastern_tz, is_dst=True) print(aware_dst) # Зимнее время aware_std = timezone.make_aware(ambiguous_dt, eastern_tz, is_dst=False) print(aware_std)

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

"2025-11-02 01:30:00-04:00" "2025-11-02 01:30:00-05:00"

Смотрите также

  • функция timezone.now,
    которая возвращает текущую дату и время с учётом временной зоны
  • функция timezone.localtime,
    которая преобразует осознанный datetime в текущую временную зону
  • функция timezone.make_naive,
    которая выполняет обратное преобразование - делает datetime наивным
  • функция timezone.is_aware,
    которая проверяет, является ли datetime осознанным
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить