Gibt es eine einfache Möglichkeit, ein Datumsformat in ein anderes Datumsformat in PHP zu konvertieren?
Ich habe dies:
$old_date = date('y-m-d-h-i-s'); // works
$middle = strtotime($old_date); // returns bool(false)
$new_date = date('Y-m-d H:i:s', $middle); // returns 1970-01-01 00:00:00
Aber ich möchte natürlich, dass es ein aktuelles Datum zurückgibt und nicht das Datum der Morgendämmerung. Was mache ich falsch?
Der zweite Parameter von "date()" muss ein richtiger Zeitstempel sein (Sekunden seit dem 1. Januar 1970). Sie übergeben eine Zeichenkette, die date() nicht erkennen kann.
Sie können strtotime() verwenden, um einen Datumsstring in einen Zeitstempel zu konvertieren. Allerdings erkennt auch strtotime() das Format "y-m-d-h-i-s" nicht.
PHP 5.3 und höher
Verwenden Sie DateTime::createFromFormat
. Es erlaubt Ihnen, eine exakte Maske zu spezifizieren - unter Verwendung der date()
-Syntax - um eingehende Datumsstrings zu parsen.
PHP 5.2 und niedriger
Sie müssen die Elemente (Jahr, Monat, Tag, Stunde, Minute, Sekunde) manuell mit substr()
analysieren und die Ergebnisse an mktime() übergeben, das Ihnen einen Zeitstempel erstellt.
Aber das ist eine Menge Arbeit! Ich empfehle, ein anderes Format zu verwenden, das strftime() versteht. strftime() versteht jede Datumseingabe außer das nächste Mal, wenn Joe auf dem Eis ausrutscht
. zum Beispiel funktioniert dies:
$old_date = date('l, F d y h:i:s'); // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Sie müssen $old_date wieder in einen Zeitstempel umwandeln, da die date-Funktion einen Zeitstempel als zweites Argument benötigt.