Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in PHP eine Datumszeichenfolge „y-m-d-h-i-s' in „Y-m-d H:i:s' konvertieren?

Wie kann ich in PHP eine Datumszeichenfolge „y-m-d-h-i-s' in „Y-m-d H:i:s' konvertieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 18:32:34550Durchsuche

How Can I Convert a 'y-m-d-h-i-s' Date String to 'Y-m-d H:i:s' in PHP?

Konvertieren von Datumsformaten in PHP

Es kann vorkommen, dass Sie in PHP Datumsformate von einem Format in ein anderes umwandeln müssen. Obwohl PHP mehrere Funktionen zur Datumsmanipulation bietet, ist es wichtig, den Prozess und mögliche Fallstricke zu verstehen.

Stellen Sie sich dieses Szenario vor: Sie haben ein Datum im Format „y-m-d-h-i-s“ und möchten es in das Format „y-m-d-h-i-s“ konvertieren 'Y-m-d H:i:s'-Format. Normalerweise würden Sie strtotime() verwenden, um die Zeichenfolge in einen Zeitstempel umzuwandeln und ihn dann an date() zu übergeben. In Ihrem Fall gibt strtotime() jedoch „false“ zurück, sodass Sie das falsche Datum „1970-01-01 00:00:00“ erhalten.

Das Problem liegt im Format der Eingabezeichenfolge. strtotime() erwartet einen gültigen Zeitstempel oder einen String in einem Format, das es erkennt. Leider ist 'y-m-d-h-i-s' nicht eines dieser anerkannten Formate.

Lösungen

PHP 5.3 und höher

Für PHP 5.3 und höher ist die empfohlene Lösung die Verwendung von DateTime::createFromFormat(). Mit dieser Funktion können Sie mithilfe der date()-Syntax eine genaue Maske angeben, um eingehende Zeichenfolgendaten zu analysieren. In Ihrem Fall würde der Code so aussehen:

$datetime = DateTime::createFromFormat('y-m-d-h-i-s', $old_date);
$new_date = $datetime->format('Y-m-d H:i:s');

PHP 5.2 und niedriger

In PHP 5.2 und niedriger müssen Sie die Elemente (Jahr) manuell analysieren , Monat, Tag, Stunde, Minute, Sekunde) mit substr() und geben Sie die Ergebnisse an mktime() weiter, das eine generiert Zeitstempel.

Dieser Ansatz ist jedoch umständlicher. Es ist besser, ein anderes Format zu verwenden, das strftime() verstehen kann und das verschiedene Datumseingabeformate unterstützt. Dieser Code funktioniert beispielsweise:

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

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP eine Datumszeichenfolge „y-m-d-h-i-s' in „Y-m-d H:i:s' konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn