Dass es bei nicht standardisierten Angaben (sprich Datenmüll) keinen gescheiten Wert ergibt, ist auch ein generelles Problem. Wenn man dazu keine eindeutige Regel definieren kann, ist das auch unlösbar.
Ja richtig, ich halte es aus diesem Grund für sinnvoller defensiv vorzugehen und eine Exception zu schmeißen, wenn die Eingabe nicht auf das erwartete Format passt, anstatt zu versuchen den Eingabestring willkürlich zu (re)interpretieren.
function format(string $input) : string {
$dateTime = DateTime::createFromFormat('Y-m-d', $input);
if ($dateTime instanceof DateTime) {
return $dateTime->format('d.m.y');
} else {
throw new DomainException("$input does not match the expected format yyyy-mm-dd.");
}
}