Как преобразовать строку в дату и время в 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 с помощью модуля datetime. Форматируйте даты в строки с помощью strftime и обрабатывайте часовые пояса.
Как преобразовать строку в Int в PythonУзнайте, как преобразовать строку в целое число в Python с помощью функции int(). Безопасно обрабатывайте ошибки и преобразуйте числа из двоичного, восьмеричного или шестнадцатеричного формата.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Строки Python
Мастер манипуляций со строками в Python. Изучите строковые методы, методы нарезки, конкатенации и форматирования на понятных примерах исполняемого кода.
Шпаргалка по строковым методам Python
Полное справочное руководство по манипулированию строками в Python. Мастер форматирования, поиска, разделения, замены и проверки свойств строк.
Декораторы Python и шаблоны проектирования декораторов: ключевые различия
Сравните декораторы Python и классический шаблон проектирования декораторов. Поймите разницу между переносом функций во время определения и динамической композицией объектов во время выполнения с помощью исполняемого кода.