Мастерство модуля datetime Python: даты, время, timedelta и strftime
Библиотека datetime в Python предлагает мощный набор инструментов для манипуляции датами, временем и временными интервалами. Работая с объектами вместо сырых строк или таймстемпов, разработчики могут выполнять точные вычисления и форматирование с уверенностью.
Ключевые классы datetime
- date — обрабатывает год, месяц и день.
- time — обрабатывает час, минуту, секунду и микросекунду, независимо от конкретной даты.
- datetime — объединяет дату и время в единый объект.
- timedelta — представляет длительность, позволяя складывать или вычитать даты и время.
- tzinfo — абстрактная база для поддержки часовых поясов.
Начало работы: импорт и создание
Перед любой манипуляцией импортируйте нужные классы:
from datetime import date, time, datetime, timedelta
Создайте объект date:
today = date.today() print(today) # например, 2024-04-19
Текущая дата и время
Метод datetime.now() возвращает текущую локальную дату и время:
now = datetime.now() print(now) # 2024-04-19 14:35:12.123456
Чтобы извлечь только компонент времени:
current_time = now.time() print(current_time) # 14:35:12.123456
Форматирование вывода с strftime
Метод strftime преобразует объекты datetime в человекочитаемые строки, используя коды формата:
now.strftime("%Y-%m-%d %H:%M:%S") # "2024-04-19 14:35:12"
Частые директивы:
%Y— четырёхзначный год.%y— двузначный год.%a— сокращённое имя дня недели.%A— полное имя дня недели.%b— сокращённое имя месяца.%B— полное имя месяца.%d— день месяца (01‑31).%H— час (00‑23).%I— час (01‑12).%M— минута (00‑59).%S— секунда (00‑59).%p— AM или PM.
Примеры:
# 12-часовой формат с AM/PM
print(now.strftime("%I:%M:%S %p"))
# 24-часовой формат
print(now.strftime("%H:%M"))
Работа с timedelta
timedelta представляет промежуток времени. Поддерживает арифметику с датами и datetime:
# Создать timedelta в 365 дней one_year = timedelta(days=365) # Год от сегодня future_date = datetime.now() + one_year print(future_date)
Расчёт дней до события (например, Нового года):
today = date.today()
new_year = date(today.year, 1, 1)
if new_year < today:
new_year = date(today.year + 1, 1, 1)
print("New Year is in", (new_year - today).days, "days")
else:
print("New Year is in", (new_year - today).days, "days")
Собираем всё вместе
Ниже — краткий, готовый к запуску скрипт, демонстрирующий основные фичи:
from datetime import datetime, date, timedelta
# Текущая дата и время
now = datetime.now()
print("Now:", now)
# Примеры форматирования
print("ISO format:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("12‑hour time:", now.strftime("%I:%M:%S %p"))
# Операции с timedelta
one_week = timedelta(weeks=1)
print("One week from now:", now + one_week)
# Дни до Нового года
today = date.today()
new_year = date(today.year + (today < date(today.year, 1, 1)), 1, 1)
print("Days until New Year:", (new_year - today).days)
Резюме
Модуль datetime в Python оснащает разработчиков мощными, типобезопасными инструментами для манипуляции датой и временем:
- Используйте объекты
date,timeиdatetimeдля чётких, явных представлений. - Применяйте
strftimeдля гибкого, locale-aware форматирования. - Используйте
timedeltaдля арифметики и расчёта интервалов. - Помните импортировать нужные классы перед использованием; иначе интерпретатор поднимет ошибки.
Эти инструменты незаменимы для задач от простого таймстемпинга до сложной логики планирования.
Python
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Получение текущей даты и времени в Python: практическое руководство
- Python: получение текущего времени и работы с часовыми поясами
- Освоение модуля time в Python: функции, структуры и практические примеры
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Функция print() в Python: практическое руководство с примерами
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры
- Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
- Освоение лямбда-функций Python: практические примеры и лучшие практики