Почему метод strptime из модуля datetime добавляет год, месяц и день, если в форматируемой строке их нет?
У объекта datetime всегда есть год и всё остальное, by design. Если они не нужны - надо просто форматировать вывод без них явным образом.
Вы используете объект "даты-время", что подразумевает, что у вас на выходе должна быть дата и должно быть время. А так как во входных данных у вас даты не обнаружено, то подставляется дата по умолчанию.
Чтобы вернуть объект времени вам нужно его извлечь из даты-времени:
print(datetime.strptime('23:14:44', '%H:%M:%S').time())