Handbuchquäler: DateTime::createFromFormat (Vollständig, mit str_replace)

Beitrag lesen

Leider hat setlocale() offenbar keinen Einfluss auf date_create_from_format(). Dann eben so:

<?php
$dates = [
'28-Jan-2019',
'28-Feb-2019',
'28-Mär-2019',
'28-Apr-2019',
'28-Mai-2019',
'28-Jun-2019',
'28-Jul-2019',
'28-Aug-2019',
'28-Sep-2019',
'28-Okt-2019',
'28-Nov-2019',
'28-Dez-2019'
];

$s=['Mär', 'Mai', 'Okt', 'Dez'];
$r=['Mar', 'May', 'Oct', 'Dec'];


foreach ( $dates as $date ) {
	$d = date_create_from_format(
			'j-M-Y',
			str_replace( $s, $r, $date )
		);
	echo date_format($d, 'd.m.Y') . "\n";
}

Test:

28.01.2019
28.02.2019
28.03.2019
28.04.2019
28.05.2019
28.06.2019
28.07.2019
28.08.2019
28.09.2019
28.10.2019
28.11.2019
28.12.2019

Es gäbe freilich noch die Umwandlung über reine Textersetzung bzw. Arrayfunktionen wie $ar=implode('-', $date), dann Ersetzen der Monate und abschließendem Zusammenbau eines Strings. Aber wenn mit den Datumsangaben gerechnet werden muss ist obiges der "Königsweg".