Python Datetime: работа с датами и временем

Узнайте, как обрабатывать даты, время, часовые пояса и вычисления в Python. Освойте форматирование, синтаксический анализ и арифметику с использованием datetime и timedelta.

Попробуйте в редакторе

Обзор

Обработка дат и времени является общеизвестной проблемой при разработке программного обеспечения из-за високосных лет, корректировок перехода на летнее время и различных форматов часовых поясов. Python решает эти проблемы с помощью встроенного модуля datetime. Этот модуль предоставляет надежный набор классов объектов, таких как «дата», «время», «дата-время» и «часовой пояс», которые четко представляют временные данные и манипулируют ими, упрощая вычисления дат.

Одной из наиболее распространенных задач является преобразование дат в строки (форматирование) и строк в даты (синтаксический анализ). Python использует для этого два основных метода: `.strftime()` (время формата строки) преобразует объект datetime в читаемую строку с использованием кодов форматирования (например, `%Y` для года, `%m` для месяца и `%d` для дня). И наоборот, `datetime.strptime()` (время анализа строки) анализирует входную необработанную строку в объект datetime на основе соответствующего шаблона формата, что жизненно важно при чтении журналов или входных данных API.

Выполнение математических вычислений с датами также полностью поддерживается с использованием объекта timedelta. «Timedelta» представляет продолжительность времени (например, 7 дней, 4 часа). Вы можете добавить или вычесть «timedelta» из «datetime», чтобы вычислить прошлые или будущие даты (например, для определения даты истечения срока действия). При работе с несколькими часовыми поясами использование объектов, учитывающих часовой пояс (таких как «zoneinfo» или «timezone.utc»), имеет решающее значение для обеспечения точности сравнения дат в разных местоположениях серверов.

Код и вывод выполнения

Разбор строк в объекты datetime и вычисление будущих сроков с использованием timedelta.

from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Терминальный выход
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Пошаговая реализация

  • Расчет срока действия пробной версии и дат выставления счетов
  • Анализ строк временных меток в журналах доступа к серверу
  • Планирование автоматических заданий cron или повторяющихся отчетов

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

Что такое наивный и осведомленный объект datetime?

Наивный объект datetime не содержит информации о часовом поясе, тогда как осведомленный объект datetime включает смещения часового пояса, что делает его безопасным для расчетов международного времени.

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

Вычитание одного объекта datetime из другого возвращает объект timedelta, представляющий точную продолжительность между ними.

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.