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

Функция timezone.make_naive

Функция make_naive применяется к осознанному объекту datetime и возвращает наивный объект datetime. Преобразование происходит путём пересчёта времени из указанного часового пояса в текущий активный часовой пояс Django, после чего информация о часовом поясе удаляется. Функция особенно полезна при работе с базами данных, которые хранят даты в наивном формате, или при выполнении операций сравнения дат.

Синтаксис

from django.utils import timezone naive_dt = timezone.make_naive(aware_dt, timezone=None)

Функция принимает следующие параметры:

  • 'aware_dt' - осознанный объект datetime, который требуется преобразовать в наивный.
  • 'timezone' - необязательный параметр, задающий часовой пояс для преобразования. По умолчанию используется текущий активный часовой пояс.

Пример . Использование с текущим часовым поясом

Преобразуем осознанное время в наивное с учётом текущего часового пояса:

from django.utils import timezone from datetime import datetime # Создаём осознанный объект с часовым поясом UTC aware_dt = datetime(2025, 5, 15, 14, 30, 0, tzinfo=timezone.utc) print(f"Осознанное время: {aware_dt}") # Преобразуем в наивное время naive_dt = timezone.make_naive(aware_dt) print(f"Наивное время: {naive_dt}")

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

"Осознанное время: 2025-05-15 14:30:00+00:00" "Наивное время: 2025-05-15 17:30:00"

В примере время было автоматически пересчитано из UTC в текущий часовой пояс (Москва, UTC+3), после чего информация о часовом поясе была удалена.

Пример . С указанием часового пояса

Преобразуем осознанное время в наивное с указанием конкретного часового пояса:

from django.utils import timezone from datetime import datetime import pytz # Создаём осознанный объект aware_dt = datetime(2025, 5, 15, 14, 30, 0, tzinfo=timezone.utc) # Задаём часовой пояс Нью-Йорка new_york_tz = pytz.timezone('America/New_York') naive_dt = timezone.make_naive(aware_dt, timezone=new_york_tz) print(f"Наивное время в Нью-Йорке: {naive_dt}")

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

"Наивное время в Нью-Йорке: 2025-05-15 10:30:00"

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

Получим осознанное время из модели и преобразуем его в наивное для сравнения:

from django.utils import timezone from myapp.models import Article from datetime import timedelta # Получаем осознанное время из модели article = Article.objects.get(id=1) aware_pub_date = article.published_at # Преобразуем в наивное для выполнения операции naive_pub_date = timezone.make_naive(aware_pub_date) naive_now = timezone.make_naive(timezone.now()) # Сравниваем наивные объекты if naive_pub_date > naive_now - timedelta(days=7): print("Статья опубликована на этой неделе") else: print("Статья опубликована более недели назад")

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

  • функция make_aware,
    которая выполняет обратное преобразование - из наивного в осознанное время
  • функция is_naive,
    которая проверяет, является ли объект datetime наивным
  • функция is_aware,
    которая проверяет, является ли объект datetime осознанным
  • функция get_current_timezone,
    которая возвращает текущий активный часовой пояс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить