Как преобразовать строку с датой в объект `datetime`?

Для преобразования строки с датой в объект datetime в Python используется модуль datetime и метод datetime.strptime().

Пример:

    from datetime import datetime

    date_string = "2023-10-27"
    date_object = datetime.strptime(date_string, "%Y-%m-%d")

    print(date_object) # Вывод: 2023-10-27 00:00:00
  
Где "%Y-%m-%d" - это формат строки, соответствующий формату входной строки.

Преобразование строки с датой в объект datetime в Python выполняется с использованием модуля datetime и его метода strptime().

Метод strptime() принимает два аргумента:

  • Строка, содержащая дату и время.
  • Строка формата, описывающая формат даты и времени в исходной строке.

Пример:


import datetime

date_string = "2023-10-27 10:30:00"
date_format = "%Y-%m-%d %H:%M:%S"  # Формат строки даты

datetime_object = datetime.datetime.strptime(date_string, date_format)

print(datetime_object) # Вывод: 2023-10-27 10:30:00
print(type(datetime_object)) # Вывод: <class 'datetime.datetime'>

Разъяснения:

  • %Y: Год с веком (например, 2023)
  • %m: Месяц (01-12)
  • %d: День месяца (01-31)
  • %H: Час (00-23)
  • %M: Минута (00-59)
  • %S: Секунда (00-59)

Формат строки (date_format) должен точно соответствовать формату входной строки (date_string). Несоответствие форматов приведет к ошибке ValueError: time data does not match format.

Другие примеры форматов:

  • %d/%m/%Y: День/Месяц/Год (например, 27/10/2023)
  • %m/%d/%y: Месяц/День/Год (двузначный) (например, 10/27/23)
  • %B %d, %Y: Полное название месяца, день, год (например, October 27, 2023)
  • %a, %d %b %Y: Сокращенное название дня недели, день, сокращенное название месяца, год (например, Fri, 27 Oct 2023)

Полный список директив формата можно найти в документации Python к модулю datetime.

Обработка ошибок:

Рекомендуется обернуть вызов strptime() в блок try...except для обработки возможных ошибок, например, если входная строка не соответствует ожидаемому формату.


import datetime

date_string = "invalid date"
date_format = "%Y-%m-%d"

try:
    datetime_object = datetime.datetime.strptime(date_string, date_format)
    print(datetime_object)
except ValueError as e:
    print(f"Ошибка преобразования даты: {e}")
0