Konvertierung eines Datumsformats in ein anderes in PHP
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?
321
3
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 derdate()
-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:Versuchen Sie dies:
Sie müssen $old_date wieder in einen Zeitstempel umwandeln, da die date-Funktion einen Zeitstempel als zweites Argument benötigt.