Функция timezone.now
Функция now из модуля django.utils.timezone используется
для получения текущей даты и времени. Возвращаемое значение -
объект datetime.datetime, который содержит информацию
о временной зоне (timezone-aware), если используется активный
часовой пояс. В противном случае возвращается наивный
объект даты и времени (timezone-naive). Функция не принимает
параметров и всегда возвращает актуальное текущее время.
В отличие от стандартной функции datetime.now, которая
возвращает наивное время, timezone.now учитывает настройки
часового пояса проекта Django.
Синтаксис
from django.utils import timezone
current_time = timezone.now()
Пример . Использование без настройки часового пояса
Рассмотрим пример использования функции в пустом проекте с настройками часового пояса по умолчанию:
from django.utils import timezone
res = timezone.now()
print(res)
Результат выполнения кода:
"2026-09-07 14:32:18.123456+00:00"
Пример . Использование с активным часовым поясом
Если в настройках проекта установлен часовой пояс, например
'Europe/Moscow', то функция возвращает время с учётом
смещения:
from django.utils import timezone
res = timezone.now()
print(res)
Результат выполнения кода:
"2026-09-07 17:32:18.123456+03:00"
Пример . Использование для установки даты создания модели
Часто функцию timezone.now используют в качестве значения
по умолчанию для поля DateTimeField в моделях. Это позволяет
автоматически записывать время создания записи:
from django.db import models
from django.utils import timezone
class Article(models.Model):
title = models.CharField(max_length=100)
created_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
Пример . Сравнение с datetime.now
Наглядно покажем разницу между стандартным методом
datetime.now и функцией timezone.now:
from datetime import datetime
from django.utils import timezone
naive_time = datetime.now()
aware_time = timezone.now()
print(f"Naive: {naive_time}")
print(f"Aware: {aware_time}")
Результат выполнения кода:
"Naive: 2026-09-07 14:32:18.123456"
"Aware: 2026-09-07 17:32:18.123456+03:00"
Смотрите также
-
функция
timezone.localtime,
преобразует переданное время в локальный часовой пояс -
функция
timezone.localdate,
возвращает текущую дату в локальном часовом поясе -
функция
timezone.make_aware,
преобразует наивное время в осознанное -
функция
timezone.get_current_timezone,
возвращает объект текущего часового пояса