In PHP haben Sie Code bereitgestellt, der versucht, ein Datum in das Format zu konvertieren TT/MM/JJJJ im Format JJJJ-MM-TT. Sie sind jedoch auf ein Problem gestoßen, bei dem die Konvertierung einen unerwarteten Wert von 1970-01-01 zurückgibt.
Das Problem liegt in der Verwendung des PHP strtotime( ) Funktion. Beim Parsen eines Datums im Format TT/MM/JJJJ geht strtotime() davon aus, dass die ersten beiden Ziffern den Monat (mm) und die nächsten beiden Ziffern den Tag (tt) darstellen. Beispielsweise würde der 20.02.2000 als 20. Februar 2000 interpretiert.
In Ihrem Fall liegt das Datum in der URL jedoch im Format Tag/Monat/Jahr vor (TT/MM/JJJJ). . Das bedeutet, dass die ersten beiden Ziffern den Tag und die nächsten beiden Ziffern den Monat darstellen. Infolgedessen interpretiert strtotime() das Datum falsch und gibt einen falschen Wert zurück.
Um dieses Problem zu beheben, wird empfohlen, DateTime:: zu verwenden. createFromFormat()-Methode anstelle von strtotime(). Mit dieser Methode können Sie das genaue Format der Datumszeichenfolge angeben und so sicherstellen, dass diese korrekt analysiert wird. Hier ist eine aktualisierte Version Ihres Codes:
<code class="php">$date = $date1 = DateTime::createFromFormat('d/m/Y', '20/02/2000'); $D->query = $date->format('Y-m-d'); // 2000-02-20</code>
Durch die Verwendung von DateTime::createFromFormat() können Sie das Datum in der URL genau in das Format JJJJ-MM-TT konvertieren.
Um ähnliche Probleme in Zukunft zu vermeiden, ist es wichtig, Datumsangaben in URLs korrekt zu formatieren. Wenn Sie Datumsangaben im Format TT/MM/JJJJ übergeben, stellen Sie sicher, dass die ersten beiden Ziffern den Tag und die nächsten beiden Ziffern den Monat darstellen. Alternativ können Sie ein standardisierteres Format wie JJJJ-MM-TT verwenden.
Das obige ist der detaillierte Inhalt vonWarum gibt mein PHP-Code beim Konvertieren von TT/MM/JJJJ-Daten in URLs den Wert 1970-01-01 zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!