
В Python для работы с датой и временем используют модуль datetime. Основной объект – datetime.datetime, который позволяет получить текущее время с точностью до микросекунд. Метод datetime.now() возвращает локальное время, а datetime.utcnow() – время по UTC.
Для более компактного отображения времени применяют метод strftime(). Он позволяет форматировать дату и время по заданной маске. Например, %Y-%m-%d %H:%M:%S выдаст результат вида 2025-09-12 14:35:20. Можно отдельно получить часы, минуты и секунды через свойства hour, minute и second.
Для работы с таймзонами используют модуль zoneinfo, доступный начиная с Python 3.9. Передача объекта таймзоны в datetime.now(tz=…) позволяет получать корректное локальное время для любой зоны.
Если нужна точка времени с высокой точностью для измерений, применяют time.time(). Функция возвращает количество секунд с начала эпохи Unix в виде числа с плавающей запятой, что удобно для вычислений разницы времени.
Использование модуля time для получения текущего времени
Модуль time предоставляет функции для работы с системным временем и временными метками. Для получения текущего времени используется функция time.time(), которая возвращает количество секунд, прошедших с 1 января 1970 года (эпоха Unix). Результат представлен в формате float, где целая часть – секунды, а дробная – доли секунды.
Пример использования:
import time
current_timestamp = time.time()
print(current_timestamp)
Для отображения времени в человекочитаемом формате применяется time.localtime(), которая преобразует метку времени в структуру struct_time. Доступ к отдельным компонентам осуществляется через атрибуты: tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec.
Пример получения текущего локального времени:
import time
t = time.localtime()
print(f"{t.tm_hour}:{t.tm_min}:{t.tm_sec}")
import time
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted_time)
Если требуется UTC-время, применяют time.gmtime(), аналогично localtime(), но возвращается время в стандартном мировом формате без смещения часового пояса.
import time
print(time.ctime())
Для измерения времени выполнения операций полезна time.perf_counter(). Она возвращает высокоточный таймер, не зависящий от системных изменений времени, что позволяет оценивать длительность выполнения блоков кода с микросекундной точностью.
Получение даты и времени через datetime.now()

Функция datetime.now() возвращает объект datetime с текущей локальной датой и временем. Для использования необходимо импортировать модуль datetime:
from datetime import datetime
Пример получения текущего времени:
current_time = datetime.now()
Результат содержит год, месяц, день, часы, минуты, секунды и микросекунды. Для доступа к отдельным компонентам используется соответствующее свойство объекта:
| Компонент | Свойство | Пример |
|---|---|---|
| Год | year |
current_time.year |
| Месяц | month |
current_time.month |
| День | day |
current_time.day |
| Часы | hour |
current_time.hour |
| Минуты | minute |
current_time.minute |
| Секунды | second |
current_time.second |
| Микросекунды | microsecond |
current_time.microsecond |
formatted = current_time.strftime("%d-%m-%Y %H:%M:%S")
Метод datetime.now() поддерживает параметр tz для указания часового пояса через объект timezone:
from datetime import timezone, timedelta
current_utc = datetime.now(timezone.utc)
Использование datetime.now() подходит для логирования событий, отметки времени при обработке данных и синхронизации процессов с локальным временем системы.
Форматирование времени с strftime()
Метод strftime() позволяет преобразовать объект времени в строку с заданным форматом. Он применяется к объектам datetime или time из модуля datetime.
Синтаксис:
datetime_object.strftime(format)
Часто используемые коды форматирования:
%Y– год с четырьмя цифрами (например, 2025)%y– год с двумя цифрами (например, 25)%m– месяц с ведущим нулём (01–12)%d– день месяца с ведущим нулём (01–31)%H– часы в 24-часовом формате (00–23)%I– часы в 12-часовом формате (01–12)%M– минуты (00–59)%S– секунды (00–59)%p– AM/PM%a– сокращённое название дня недели (Mon, Tue)%A– полное название дня недели (Monday, Tuesday)%b– сокращённое название месяца (Jan, Feb)%B– полное название месяца (January, February)
Примеры использования:
-
Вывести дату в формате «ДД-ММ-ГГГГ»:
from datetime import datetime now = datetime.now() formatted_date = now.strftime("%d-%m-%Y") print(formatted_date) -
Вывести время в формате 12-часового времени с AM/PM:
formatted_time = now.strftime("%I:%M:%S %p") print(formatted_time) -
Полная дата с названием дня недели и месяца:
full_format = now.strftime("%A, %d %B %Y %H:%M:%S") print(full_format)
Рекомендации:
- Использовать
%Y-%m-%d %H:%M:%Sдля совместимости с базами данных и журналами. - Для локализации даты и времени подключать модуль
locale. - Избегать смешивания 12- и 24-часового формата в одном выражении.
- Для кратких отметок времени удобно использовать
%H:%Mили%I:%M %p.
Получение времени в формате UTC
Для работы с временем в формате UTC в Python используется модуль datetime. Чтобы получить текущую дату и время в UTC, применяют метод datetime.datetime.utcnow(). Он возвращает объект datetime без информации о часовом поясе.
Пример использования:
import datetime
current_utc = datetime.datetime.utcnow()
print(current_utc)
Если требуется объект с явным указанием часового пояса, используют datetime.timezone.utc совместно с datetime.datetime.now():
import datetime
current_utc = datetime.datetime.now(datetime.timezone.utc)
print(current_utc)
Этот подход предпочтителен при работе с библиотеками, поддерживающими временные зоны, или при необходимости конвертации между зонами.
formatted_utc = current_utc.strftime("%Y-%m-%d %H:%M:%S %Z")
print(formatted_utc)
Он отображает дату и время в стандартном формате, включая обозначение зоны UTC. Для точного контроля часовых поясов рекомендуется использовать pytz или zoneinfo (Python 3.9+) при необходимости работы с разными регионами.
Извлечение отдельных компонентов времени: часы, минуты, секунды

Для работы с отдельными элементами времени в Python используют модуль datetime. Он позволяет получить текущее время и извлечь часы, минуты и секунды без лишних вычислений.
Пример базового использования:
from datetime import datetime
now = datetime.now()
hours = now.hour
minutes = now.minute
seconds = now.second
print(f"Часы: {hours}, Минуты: {minutes}, Секунды: {seconds}")
Особенности и рекомендации:
hourвозвращает значение от 0 до 23.minuteиsecondвозвращают значения от 0 до 59.- Если требуется двухзначное отображение, используйте форматирование:
f"{hours:02}". - Для работы с часовыми поясами подключайте
pytzили встроенныйtimezoneизdatetime. - Для повторяющихся операций рекомендуется сохранять текущее время в переменной, чтобы избежать множественных вызовов
datetime.now().
Дополнительно можно извлекать миллисекунды через microsecond и комбинировать их с остальными компонентами для точного контроля времени.
Работа с временными метками через timestamp()

Метод timestamp() объекта datetime возвращает количество секунд с начала эпохи Unix (1 января 1970 года, 00:00:00 UTC) в виде числа с плавающей точкой. Это позволяет использовать дату и время в формате, удобном для хранения и передачи между системами.
Пример получения текущей временной метки:
from datetime import datetime
now = datetime.now()
ts = now.timestamp()
print(ts)
Если объект datetime содержит информацию о часовом поясе, timestamp() учитывает смещение и возвращает время в UTC. Для работы с часовыми поясами используйте datetime.now(tz=timezone.utc) или объект pytz.
Для обратного преобразования временной метки в объект datetime применяют datetime.fromtimestamp() или datetime.utcfromtimestamp(). Например:
from datetime import datetime
dt = datetime.fromtimestamp(ts)
print(dt)
Метод timestamp() полезен при записи логов, работе с API и базами данных, где требуется единый числовой формат времени для сортировки и сравнения событий.
В случае необходимости миллисекунд точность достигается умножением результата на 1000: ms = int(now.timestamp() * 1000).
Сравнение времени и вычисление разницы между датами
В Python для работы с датами и временем используют модуль datetime. Для сравнения дат применяют объекты datetime.datetime или datetime.date. Сравнение выполняется стандартными операторами: <, <=, ==, >=, >.
Пример сравнения двух дат:
from datetime import datetime
dt1 = datetime(2025, 9, 12, 14, 30)
dt2 = datetime(2025, 9, 13, 10, 0)
if dt1 < dt2:
print("dt1 раньше dt2")
Для вычисления разницы между датами используют оператор вычитания. Результат – объект timedelta, который хранит разницу в днях, секундах и микросекундах.
Пример вычисления разницы:
delta = dt2 - dt1
print(delta.days, "дней")
print(delta.total_seconds(), "секунд")
Таблица методов и свойств timedelta:
| Метод/Свойство | Описание |
|---|---|
| days | Количество полных дней |
| seconds | Количество секунд (без учёта дней) |
| microseconds | Количество микросекунд (без учёта дней и секунд) |
| total_seconds() | Общее количество секунд с учётом всех компонентов |
Для вычисления разницы между текущим временем и заданной датой удобно использовать datetime.now():
from datetime import datetime
start = datetime(2025, 1, 1)
now = datetime.now()
delta = now - start
print("Прошло дней:", delta.days)
При работе с разницей важно учитывать часовые пояса. Для этого используют модуль pytz или datetime.timezone>, чтобы избежать ошибок при сравнении локального и UTC времени.
Использование библиотеки pendulum для управления временем
Pendulum предоставляет удобный интерфейс для работы с датой и временем, включая поддержку таймзон и интервалов. Для получения текущего времени в локальной таймзоне используется функция pendulum.now(). Например: current_time = pendulum.now().
Для работы с конкретными таймзонами применяется метод pendulum.now("Europe/Moscow"), который возвращает объект времени с учётом указанной зоны. Это упрощает преобразования между зонами и вычисление разницы времени.
Создание даты и времени вручную выполняется через pendulum.datetime(год, месяц, день, час, минута, секунда). Объекты pendulum поддерживают арифметику времени: прибавление дней, часов, минут осуществляется методами add(days=1), subtract(hours=2).
Pendulum позволяет вычислять интервалы и разницу между датами. Метод diff возвращает объект с доступными свойствами in_days(), in_hours(), in_minutes(). Это удобно для измерения времени выполнения задач или расчёта срока между событиями.
Для работы с периодами можно использовать Period и Duration. Например, duration = pendulum.duration(days=3, hours=5) создаёт интервал времени, который легко складывать с объектами datetime или использовать для планирования событий.
Вопрос-ответ:
Как получить текущее время в Python?
Для получения текущего времени можно использовать модуль datetime. Например, вызов datetime.datetime.now() возвращает объект с текущей датой и временем.
Чем отличается datetime.now() от datetime.today()?
Оба метода возвращают текущую дату и время, но datetime.today() возвращает только дату и время без часового пояса, тогда как datetime.now() может принимать аргумент timezone для работы с разными часовыми поясами.
Как получить только текущее время без даты?
Можно использовать datetime.datetime.now().time(), чтобы получить объект времени. Он будет содержать часы, минуты, секунды и микросекунды, но без информации о дате.
Можно ли получать время в формате UNIX timestamp в Python?
Да. Для этого можно вызвать метод time.time() из модуля time. Он вернет количество секунд, прошедших с начала эпохи (1 января 1970 года). Такой формат удобно использовать для вычислений и хранения времени в базах данных.
Как вывести текущее время в определенном формате?
Для форматирования времени используется метод strftime(). Например, datetime.datetime.now().strftime("%H:%M:%S") вернет строку с часами, минутами и секундами. Можно менять шаблон для получения нужного вида.
