Работа с датами и временем: модуль 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 для работы с временными зонами.
Главное запомнить 🔑
date— только дата,time— только время,datetime— всё вместеstrftime— преобразуем дату в строкуstrptime— парсим строку в датуtimedelta— работаем с временными интервалами- Часовые пояса — отдельная важная тема (модуль
pytz)
Теперь ты вооружён знаниями для работы с временем в Python! 🎯 Применяй их в своих проектах — от простых напоминаний до сложных аналитических систем.