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?

Lösung

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);   
Kommentare (4)

Versuchen Sie dies:

$old_date = date('y-m-d-h-i-s');
$new_date = date('Y-m-d H:i:s', strtotime($old_date));
Kommentare (3)

Sie müssen $old_date wieder in einen Zeitstempel umwandeln, da die date-Funktion einen Zeitstempel als zweites Argument benötigt.

Kommentare (0)