Работа с датами и временем: модуль datetime

Время — деньги, а datetime — мощный инструмент! ⏳

Работа с датами и временем в Python — это просто и элегантно, если знать нужные инструменты. Модуль datetime — твой верный помощник в этом деле. Давай разберём его по частям, как часы, и научимся управлять временем! ⚙️


Основные классы datetime 🧩

Модуль datetime содержит несколько ключевых классов:

  • date — работа с датами (год, месяц, день)
  • time — работа с временем (часы, минуты, секунды)
  • datetime — комбинация даты и времени
  • timedelta — разница между моментами времени
from datetime import date, time, datetime, timedelta

Создание дат и времени 🏗️

Работаем с датами (date)

today = date.today()  # Текущая дата
print(f"Сегодня: {today}")  # 2023-11-15

custom_date = date(2023, 12, 31)  # Создаём конкретную дату
print(f"Новый год: {custom_date}")  # 2023-12-31

Работаем с временем (time)

now_time = time(14, 30, 15)  # 14:30:15
print(f"Время: {now_time.hour}:{now_time.minute}")  # 14:30

Полная мощность (datetime)

now = datetime.now()  # Текущие дата и время
print(now)  # 2023-11-15 14:30:15.123456

event = datetime(2023, 12, 31, 23, 59, 59)
print(f"Последняя секунда года: {event}")

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

Преобразуем даты в красивые строки и обратно:

# datetime → строка
formatted = now.strftime("%d.%m.%Y %H:%M")
print(formatted)  # "15.11.2023 14:30"

# строка → datetime
parsed_date = datetime.strptime("31.12.2023", "%d.%m.%Y")
print(parsed_date)  # 2023-12-31 00:00:00

🔍 Популярные спецификаторы: - %Y — год (2023) - %m — месяц (01-12) - %d — день (01-31) - %H — час (00-23) - %M — минуты (00-59) - %S — секунды (00-59)


Магия timedelta: временные промежутки ⏱️

Вычисляем разницу между датами и создаём временные смещения:

# Разница между датами
new_year = date(2024, 1, 1)
today = date.today()
days_left = (new_year - today).days
print(f"До Нового года: {days_left} дней")

# Добавляем время к дате
week_later = today + timedelta(days=7)
print(f"Через неделю: {week_later}")

# Смещение времени
future = datetime.now() + timedelta(hours=3, minutes=15)
print(f"Через 3 часа 15 минут: {future}")

Пример из реальной жизни: срок подписки 💳

Давай создадим полезный пример — проверку срока действия подписки:

def check_subscription(start_date, duration_days):
    end_date = start_date + timedelta(days=duration_days)
    remaining = (end_date - datetime.now()).days

    if remaining > 0:
        return f"Подписка активна! Осталось дней: {remaining}"
    else:
        return "Подписка истекла"

# Пример использования
sub_start = datetime(2023, 11, 1)
print(check_subscription(sub_start, 30))  # Проверяем 30-дневную подписку

Часовые пояса и работа с временными зонами 🌐

Хотите углубиться в тему часовых поясов? Рекомендую посмотреть уроки Данилы Бежина по модулю pytz — это мощное дополнение к стандартному datetime для работы с временными зонами.


Главное запомнить 🔑

  1. date — только дата, time — только время, datetime — всё вместе
  2. strftime — преобразуем дату в строку
  3. strptime — парсим строку в дату
  4. timedelta — работаем с временными интервалами
  5. Часовые пояса — отдельная важная тема (модуль pytz)

Теперь ты вооружён знаниями для работы с временем в Python! 🎯 Применяй их в своих проектах — от простых напоминаний до сложных аналитических систем.

Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео