Как преобразовать строку в дату и время в Python (strptime)

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

Попробуйте это решение в редакторе

Обзор

При создании приложений, которые обрабатывают отправленные пользователем формы, очищают веб-базы данных, анализируют журналы сервера или импортируют CSV-листы, вы часто будете получать информацию о дате и времени в виде необработанных текстовых строк (например, `"2026-05-25 15:45"`). Поскольку вы не можете выполнять вычисления, арифметику дат или сортировку строк, вы должны проанализировать их в объекты даты и времени Python.

Основным методом этого преобразования является `datetime.strptime(date_string, format_string)`. Название означает «время анализа строки». Функция принимает необработанную строку даты и шаблон формата, содержащий директивы (например, %Y для года, %m для месяца и %d для дня) и возвращает соответствующий объект datetime.

Если входная строка не точно соответствует предоставленному шаблону формата, Python выдает ошибку ValueError. Чтобы предотвратить сбои, всегда заключайте операции `strptime()` в блок `try-Exception`. Для приложений, анализирующих разнообразные неструктурированные входные данные даты, внешние библиотеки, такие как python-dateutil, могут помочь автоматизировать обнаружение анализатора.

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

Этот скрипт демонстрирует синтаксический анализ строк даты с использованием datetime.strptime, обработку недопустимых входных данных и вычисление разницы дат.

from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
Терминальный выход
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

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

  • Импортируйте класс datetime из модуля datetime.
  • Определите точную структуру строки даты (например, день, месяц, разделители).
  • Вызовите datetime.strptime(date_string, format_pattern) с соответствующими директивами (например, %Y, %m, %d).
  • Оберните оператор синтаксического анализа в блок Try-Exception ValueError, чтобы корректно обрабатывать некорректные строки.

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

В чем разница между strftime и strptime?

strptime (время анализа строки) анализирует строку для создания объекта datetime. strftime (время формата строки) форматирует объект datetime в читаемое строковое представление.

Как проанализировать строки даты ISO 8601 (например, «2026-05-25T18:30:00Z»)?

ВPython 3.7+ вы можете использовать встроенную функцию datetime.fromisoformat(string), которая эффективно обрабатывает строки ISO, не требуя шаблона форматирования вручную.

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

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

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