dd-mm-yyyy в объект datetime в Python можно использовать модуль datetime и метод strptime:
  
import datetime
date_string = "21-03-2023"
date_object = datetime.datetime.strptime(date_string, "%d-%m-%Y")
print(date_object)
"%d-%m-%Y" - это форматная строка, соответствующая формату даты.
Для преобразования строки, представляющей дату в формате dd-mm-yyyy, в объект datetime в Python, можно использовать модуль datetime и его метод strptime().
Метод strptime() принимает два аргумента:
В нашем случае, формат даты dd-mm-yyyy соответствует строке формата "%d-%m-%Y".  Разберем подробнее:
%d: День месяца (01-31)%m: Номер месяца (01-12)%Y: Год с веком (например, 2023)Вот пример кода, демонстрирующий преобразование:
import datetime
date_string = "25-12-2023"
date_object = datetime.datetime.strptime(date_string, "%d-%m-%Y")
print(date_object)
print(type(date_object))
  Объяснение кода:
datetime.date_string, содержащую дату в формате dd-mm-yyyy.datetime.datetime.strptime(date_string, "%d-%m-%Y") для преобразования строки в объект datetime.  strptime создает объект datetime,  а не просто date.  Если нужен только date, можно использовать datetime.datetime.strptime(date_string, "%d-%m-%Y").date().date_object на консоль.  Он будет представлен в формате yyyy-mm-dd hh:mm:ss (время по умолчанию 00:00:00).date_object, который будет <class 'datetime.datetime'>.Дополнительные соображения:
ValueError, которые могут возникнуть, если строка не соответствует указанному формату.  Например:
import datetime
date_string = "25/12/2023" # Неправильный формат
try:
    date_object = datetime.datetime.strptime(date_string, "%d-%m-%Y")
    print(date_object)
except ValueError:
    print("Неверный формат даты. Ожидается dd-mm-yyyy.")
    date, а не datetime, можно использовать datetime.date.strptime() или извлечь дату из объекта datetime:
import datetime
date_string = "25-12-2023"
date_object = datetime.datetime.strptime(date_string, "%d-%m-%Y").date()
print(date_object) # Вывод: 2023-12-25
print(type(date_object)) # Вывод: <class 'datetime.date'>