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

Функция timezone.localtime

Функция timezone.localtime применяется к объекту datetime и возвращает новый объект datetime, преобразованный из UTC в текущий активный часовой пояс. Если объект не содержит информации о часовом поясе (наивный), то он считается находящимся в UTC. Функция также принимает необязательный аргумент timezone, позволяющий указать конкретный часовой пояс для преобразования вместо активного по умолчанию.

Синтаксис

from django.utils import timezone timezone.localtime(value, timezone=None)

Параметры функции:

  • ⁅b⁆value⁅/b⁆ - объект datetime, который необходимо преобразовать в локальный часовой пояс.
  • ⁅b⁆timezone⁅/b⁆ - необязательный параметр, указывающий конкретный часовой пояс для преобразования.

Пример . С активным часовым поясом

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

from django.utils import timezone # Получаем текущее время в UTC utc_time = timezone.now() print(utc_time) # Преобразуем в локальное время local_time = timezone.localtime(utc_time) print(local_time)

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

"2025-01-15 10:30:45.123456+00:00" "2025-01-15 13:30:45.123456+03:00"

Как видно из примера, время было автоматически скорректировано с учётом разницы в часовых поясах.

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

Преобразуем время в конкретный часовой пояс с помощью параметра timezone:

from django.utils import timezone import pytz # Получаем текущее время в UTC utc_time = timezone.now() # Преобразуем в часовой пояс Америки/Нью-Йорк new_york_time = timezone.localtime( utc_time, timezone=pytz.timezone('America/New_York') ) print(new_york_time) # Преобразуем в часовой пояс Европы/Лондон london_time = timezone.localtime( utc_time, timezone=pytz.timezone('Europe/London') ) print(london_time)

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

"2025-01-15 05:30:45.123456-05:00" "2025-01-15 10:30:45.123456+00:00"

Каждый объект datetime был преобразован с учётом своего часового пояса, что позволяет получить правильное локальное время для разных регионов.

Пример . С наивным datetime объектом

Преобразуем наивный объект datetime в локальный часовой пояс:

from django.utils import timezone from datetime import datetime # Создаем наивный объект datetime naive_time = datetime(2025, 1, 15, 10, 30, 45) print(naive_time) # Преобразуем в локальное время local_time = timezone.localtime(naive_time) print(local_time)

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

"2025-01-15 10:30:45" "2025-01-15 13:30:45+03:00"

Наивный объект автоматически считается находящимся в UTC и преобразуется в активный часовой пояс.

Пример . С моделью Django

Используем timezone.localtime для отображения времени создания записей в локальном часовом поясе:

from myapp.models import Article from django.utils import timezone # Получаем статью из базы данных article = Article.objects.first() # Преобразуем время создания в локальное local_created = timezone.localtime(article.created_at) print(f"Article created at: {local_created}")

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

"Article created at: 2025-01-15 14:30:45+03:00"

Этот подход полезен при отображении дат в пользовательском интерфейсе, так как время будет соответствовать часовому поясу пользователя.

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

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