Как работать с датами в datetime

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как работать с датами в datetime: Полный гайд по работе с датами и временем в Python

Работа с датами и временем — важная часть любого программного проекта: от создания отчетов до построения аналитики, планирования событий и обработки временных меток. В Python для этих целей предусмотрена мощная стандартная библиотека datetime.

Эта статья — полное руководство по работе с модулем datetime. Вы узнаете, как создавать и форматировать даты, вычислять разницу между датами, работать с часовыми поясами и многое другое.


Что такое модуль datetime в Python?

datetime — это стандартная библиотека Python, которая предоставляет классы для манипуляции датами и временем. Она позволяет:

  • Получать текущую дату и время.

  • Создавать объекты даты и времени вручную.

  • Выполнять арифметические операции над датами.

  • Форматировать даты в удобный для чтения формат.

  • Работать с часовыми поясами.

Импортировать модуль можно так:

python
import datetime

Основные классы модуля datetime

Класс Назначение
datetime.date Представляет дату (год, месяц, день)
datetime.time Представляет время (часы, минуты, секунды)
datetime.datetime Комбинирует дату и время
datetime.timedelta Разница между двумя датами/временем
datetime.timezone Работа с часовыми поясами

Как получить текущую дату и время?

python
from datetime import datetime now = datetime.now() print(f"Текущая дата и время: {now}")

Если вам нужна только текущая дата:

python
from datetime import date today = date.today() print(f"Сегодняшняя дата: {today}")

Создание даты вручную

python
from datetime import date custom_date = date(2025, 5, 9) print(f"Заданная дата: {custom_date}")

Извлечение информации из даты

python
today = date.today() print(f"Год: {today.year}") print(f"Месяц: {today.month}") print(f"День: {today.day}")

Работа с временем

python
from datetime import time custom_time = time(14, 30, 45) print(f"Заданное время: {custom_time}")

Извлечение данных:

python
print(f"Часы: {custom_time.hour}") print(f"Минуты: {custom_time.minute}") print(f"Секунды: {custom_time.second}")

Как вычислять разницу между датами?

Используйте класс timedelta.

python
from datetime import date, timedelta today = date.today() future_date = today + timedelta(days=30) print(f"Дата через 30 дней: {future_date}") difference = future_date - today print(f"Разница в днях: {difference.days}")

Форматирование даты и времени

Используйте метод strftime для преобразования даты в строку.

python
from datetime import datetime now = datetime.now() formatted_date = now.strftime("%d-%m-%Y %H:%M:%S") print(f"Отформатированная дата и время: {formatted_date}")

📌 Полезные форматы:

Формат Описание
%Y Год (полный)
%m Месяц (01-12)
%d День (01-31)
%H Часы (00-23)
%M Минуты (00-59)
%S Секунды (00-59)
%A День недели

Парсинг строки в дату

Если у вас есть дата в виде строки, можно преобразовать её в объект datetime с помощью strptime.

python
date_str = "09-05-2025" parsed_date = datetime.strptime(date_str, "%d-%m-%Y") print(f"Распознанная дата: {parsed_date}")

Работа с часовыми поясами

Для работы с часовыми поясами используйте модуль timezone.

python
from datetime import datetime, timezone, timedelta utc_time = datetime.now(timezone.utc) print(f"Текущее UTC время: {utc_time}") moscow_timezone = timezone(timedelta(hours=3)) moscow_time = datetime.now(moscow_timezone) print(f"Время в Москве: {moscow_time}")

Сравнение дат

python
from datetime import date date1 = date(2025, 5, 9) date2 = date(2025, 6, 1) if date1 < date2: print("date1 раньше date2") else: print("date1 позже или равна date2")

Измерение времени выполнения кода

python
import time start = time.time() # Пример кода for i in range(1000000): pass end = time.time() print(f"Время выполнения: {end - start} секунд")

FAQ — Часто задаваемые вопросы

1. Как получить день недели из даты?

python
from datetime import date today = date.today() print(f"День недели: {today.strftime('%A')}")

2. Как узнать последний день месяца?

python
from calendar import monthrange year = 2025 month = 5 last_day = monthrange(year, month)[1] print(f"Последний день месяца: {last_day}")

3. Как округлить время до ближайшего часа?

python
from datetime import datetime, timedelta now = datetime.now() rounded = now.replace(minute=0, second=0, microsecond=0) + timedelta(hours=1) print(f"Округлённое время: {rounded}")

4. Как добавить или вычесть месяцы из даты?

Используйте внешнюю библиотеку dateutil.

bash
pip install python-dateutil
python
from datetime import datetime from dateutil.relativedelta import relativedelta now = datetime.now() new_date = now + relativedelta(months=+3) print(f"Дата через 3 месяца: {new_date}")

5. Как работать с таймзонами более гибко?

Рекомендуется использовать библиотеку pytz.

bash
pip install pytz
python
from datetime import datetime import pytz timezone_msk = pytz.timezone('Europe/Moscow') moscow_time = datetime.now(timezone_msk) print(f"Московское время: {moscow_time}")

6. Как узнать разницу между двумя временными метками в минутах?

python
from datetime import datetime time1 = datetime(2025, 5, 9, 12, 0) time2 = datetime(2025, 5, 9, 14, 30) delta = time2 - time1 print(f"Разница в минутах: {delta.total_seconds() / 60}")

Заключение

Работа с датами и временем в Python с помощью модуля datetime — это просто и удобно, если знать основные инструменты и подходы.

Теперь вы умеете:

  • Получать и форматировать даты и время.

  • Работать с часовыми поясами.

  • Вычислять разницу между датами.

  • Обрабатывать строковые представления дат и времени.

Используйте эти знания в проектах для улучшения качества работы с временными данными!

Новости