Ответ 1
Смотрите dateutil docs, в частности функцию синтаксического анализа (подчеркивает мою):
Кроме того, доступны следующие аргументы ключевых слов:
по умолчаниюЕсли задано, это должен быть экземпляр datetime. Любые поля, отсутствующие в разобранной дате, будут скопированы из этого экземпляра. Значение по умолчанию - текущая дата в 00:00:00.
... (snip)...
нечеткаяЕсли для параметра fuzzy установлено значение True, неизвестные токены в строке будут проигнорированы.
Учитывая, что вы установили fuzzy
в True
, исключение не будет выбрано, поскольку оно просто игнорирует все неизвестные токены. И, поскольку аргумент default
не передается, будет возвращена текущая дата.
Таким образом, решение будет либо поддерживать fuzzy
на False
, чтобы недопустимые строки формата генерировали исключение; или проверить, соответствует ли возвращенное время datetime текущей дате в 00:00:00 утра как индикация неудачного преобразования.