Arbeiten mit Daten vor 1970 unter Verwendung von strtotime()
Problem:
Sie haben ein Textspalte in einer MySQL-Datenbank, in der Datumsangaben im Format jjjj-mm-tt gespeichert werden. Ihr PHP-Code verwendet strtotime() zum Konvertieren der Datumsangaben, Sie stellen jedoch fest, dass er nur Werte nach dem 1. Januar 1970 analysiert. Viele Ihrer Datumsangaben liegen unter diesem Grenzwert und Sie fragen sich, ob es eine Problemumgehung gibt, ohne Ihre Datenbankstruktur zu ändern.
Lösung:
Die offizielle PHP-Dokumentation hebt die Datumsbereichsbeschränkungen von hervor strtotime():
Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT
Option 1: PHP-Version und Betriebssystem aktualisieren
Wenn möglich, aktualisieren Sie auf eine PHP-Version gleich oder höher als 5.1.0 auf einer Plattform, die den erweiterten Datumsbereich unterstützt.
Option 2: Verwenden Sie DateTime von PHP Objekte
Erwägen Sie die Verwendung von DateTime-Objekten für Datumsangaben außerhalb des strtotime()-Bereichs. Sie bieten mehr Flexibilität.
Verfahrensansatz:
$date = date_create($row['value']); if (!$date) { $e = date_get_last_errors(); foreach ($e['errors'] as $error) { echo "$error\n"; } exit(1); } echo date_format($date, "F j, Y");
OOP-Ansatz:
try { $date = new DateTime($row['value']); } catch (Exception $e) { echo $e->getMessage(); exit(1); } echo $date->format("F j, Y");
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP mit Datumsangaben vor 1970 umgehen, wenn ich „strtotime()' verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!