Konvertierung
$date_array = explode("/",$date); // split the array
$var_day = $date_array[0]; //day seqment
$var_month = $date_array[1]; //month segment
$var_year = $date_array[2]; //year segment
$new_date_format = "$var_year-$var_day-$var_month"; // join them together
Möglicherweise ein MySQL-freundlicheres Format in einigen Fällen.
Punktgetrennte Datumsangaben in Schrägstrich-getrennte oder umgekehrt ändern (und Reihenfolge umkehren)
Datum von YYYY/MM/DD zu DD.MM.YYYY konvertieren (und von DD.MM.YYYY zu YYYY/MM/DD)
/**
* @param string $date (d.m.y, y-m-d, y/m/d)
* @return string|bol
*/
function convertDate($date) {
// EN-Date to GE-Date
if (strstr($date, "-") || strstr($date, "/")) {
$date = preg_split("/[\/]|[-]+/", $date);
$date = $date[2].".".$date[1].".".$date[0];
return $date;
}
// GE-Date to EN-Date
else if (strstr($date, ".")) {
$date = preg_split("[.]", $date);
$date = $date[2]."-".$date[1]."-".$date[0];
return $date;
}
return false;
}
date(‘Y-m-d’, strtotime(’23/10/2009′));
implode(‘-‘, array_reverse(explode(‘/’,$date)));
Hat nicht das 1970er-Limit-Problem des Zeitstempels.
Ihre letzte Codezeile bei der Vorbereitung des Datums für die Datenbank ist falsch, da sie den Tag vor den Monat setzt
$new_date_format = “$var_year-$var_day-$var_month”;
Sollte sein
$new_date_format = “$var_year-$var_month-$var_day”;
Fabricios Antwort ist viel eleganter und funktioniert einwandfrei:)
Kukats ist jedoch das Beste.
Danke. Einfach effektiv :)
DateTime::createFromFormat(‘d/m/Y’, “21/1/2013”)->format(“Y-m-d”)
/**
* @name Datumsformat ändern
* @note PHP > 5.3
* @params Datum, Von Datumsformat, Nach Datumsformat
* @use date_change_format()
*/
function date_change_format($setDate, $from=’Y-m-d’, $to=’d/m/Y’) {
if($setDate !=”) {
$date = DateTime::createFromFormat($from, $setDate);
return $date->format($to);
} else {
return ”;
}
}
Für mich ist die schnellste Lösung die Verwendung der strtr-Funktion
Zur Übersetzung von dd/mm/yyyy nach yyyy-dd-mm
strtr(‘Y123-Dd-Mm’, ‘Dd.Mm.Y123′, ’27/11/2017’);