Verwenden strtotime()
Sie es dann bei Ihrem ersten Date date('Y-m-d')
, um es zurück zu konvertieren:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Beachten Sie, dass es einen Unterschied zwischen der Verwendung von Schrägstrich /
und Bindestrich -
in der strtotime()
Funktion gibt. Um aus php.net zu zitieren:
Daten in den Formaten m / d / y oder dmy werden durch Betrachten des Trennzeichens zwischen den verschiedenen Komponenten eindeutig: Wenn das Trennzeichen ein Schrägstrich (/) ist, wird das amerikanische m / d / y angenommen; Wenn das Trennzeichen ein Bindestrich (-) oder ein Punkt (.) ist, wird das europäische dmy-Format angenommen.
Um mögliche Unklarheiten zu vermeiden, verwenden Sie nach Möglichkeit ISO 8601-Daten (JJJJ-MM-TT) oder DateTime :: createFromFormat ().
strtotime
akzeptiert bestimmte Formate. Sie können es überhaupt nicht füttern. DeshalbDateTime::createFromFormat
sollte statt verwendet werdenstrtotime
. Leider hat diese Antwort zu viele positive Stimmen, als dass jemand darauf achten könnte. Heutzutage ist alles Kopieren und Einfügen.Sie müssen mit den Formaten m / d / Y und mdY vorsichtig sein. PHP
/
bedeutet m / d / Y und-
dmY. Ich würde das Eingabeformat in diesem Fall explizit beschreiben:Auf diese Weise sind Sie nicht den Launen einer bestimmten Interpretation ausgeliefert.
quelle
strtotime()
Funktion zu verlassen.Um das Datum zu analysieren, sollten Sie Folgendes verwenden: DateTime :: createFromFormat ();
Ex:
Seien Sie jedoch vorsichtig, da dies abstürzen wird mit:
Sie müssen zunächst überprüfen, ob die Formatierung einwandfrei funktioniert hat:
Anstatt jetzt abzustürzen, erhalten Sie eine Ausnahme, die Sie abfangen, verbreiten usw. können.
$ dateDE hat das falsche Format, es sollte "16.10.2013" sein;
quelle
Bearbeiten: Sie können auch eine DateTimeZone an den DateTime () -Konstruktor übergeben, um sicherzustellen, dass das Datum für die gewünschte Zeitzone erstellt wird, nicht für die Standard-Zeitzone des Servers.
quelle
Für das erste Date
Für neues Datum
quelle
Wenn Sie das Format TT-MM-JJJJ haben, funktioniert es in PHP nicht wie erwartet. Im PHP-Dokument haben sie unten Richtlinien.
Sie können also einfach nicht verwenden, wie Sie möchten. Wenn Sie versuchen, das Format TT / MM / JJJJ zu verwenden, wird FALSE entfernt. Sie können Folgendes optimieren.
quelle
Als hätten wir das Datum "07 / Mai / 2018" und wir brauchen das Datum "2018-05-07" als MySQL-kompatibel
Für mich geht das. genießen :)
quelle
Da dies niemand erwähnte, ist hier ein anderer Weg:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
quelle
Wenn Sie Datumsangaben in amerikanischer Reihenfolge (Monat, Datum, Jahr) für europäische Formate (mit Bindestrich oder Punkt als Tag, Monat, Jahr) akzeptieren möchten, während Sie andere Formate akzeptieren , können Sie die DateTime-Klasse erweitern:
Oder Sie können eine Funktion erstellen, um mdY zu akzeptieren und Ymd auszugeben:
quelle
Um ein Datum aus einer beliebigen Zeichenfolge zu erstellen, verwenden Sie: $ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ date-> format ('Ymd H: i');
quelle