Naja. Du machst zu "viel" - jedenfalls wenn Du ein ISO-Datum erwartest, da haben Monate und Tage führende Nullen. Eigentlich kannst Du das Datum gleich als String hernehmen und mit substr (nötiger Link zum Handbuch) die Items rauspolken. Das ist nämlich "irre schnell". Aber weil der Name, naja, irritierend ist, könnte man auch gleich einen Zeitstempel übergeben. Oder nichts und dann das Standardverhalten (Hergeben des aktuellen Datums) erwarten:
<?php
function date2german( $date = false ) {
if ( false === $date ) {
$date = time();
}
if ( 'string' == gettype( $date ) ) {
return (
substr( $date, 8, 2) . '.'
. substr( $date, 5, 2 ) . '.'
. substr( $date, 2, 2 )
);
} elseif ( 'integer' == gettype( $date ) ) {
return date( 'd.m.y', $date );
} else {
trigger_error(
"function date2german: Typ für '$date' nicht implementiert.",
E_USER_NOTICE
);
return false;
}
}
echo date2german( '2019-12-31' ) . "\n";
echo date2german() . "\n";
php test.php
31.12.19
06.05.19