Как проверить строку на дату?

Мне нужно проверить строку на дату.

Дата может быть в двух форматах: '%d.%m' и '%d.%m.%Y'

Пробовал:

d = '09.01.2020'
try:
    datetime.datetime.strptime(d, '%d.%m') or datetime.datetime.strptime(d, '%d.%m.%Y')
except:
    print('неверный формат')

Вывод:

неверный формат

Ответы (1 шт):

Автор решения: Tehnorobot
  1. Исходя из вашего кода, вы отправляете в except все ошибки, включая ту, которая возникает, из-за того, что вы не импортировали библиотеку datetime

Предложу такой вариант решения:

import datetime

d = '09.01.2020'
if len(d.split('.')) == 3:
    try:
        datetime.datetime.strptime(d, '%d.%m.%Y')
        print('Ok')
            
    except Exception:
        print('неверный формат')
else:
    try:
        datetime.datetime.strptime(d, '%d.%m')
        print('Ok')
            
    except Exception:
        print('неверный формат')

Вывод:

Ok

Я написал в except значение Exception, чтобы не отлавливать каждую по отдельности ошибку, а все сразу. Вы можете указать конкретные ошибки и уже с ними взаимодействовать.

→ Ссылка