PHP - DateTime :: createFromFormat - Gibt ein neues DateTime-Objekt zurück, das im angegebenen Format formatiert ist.
das funktioniert:
%Vor%aber das scheitert mit
%Vor%Aufruf einer Memberfunktion getTimestamp () für ein Nicht-Objekt
Im vorliegenden Fall ist der M:S
-Teil falsch. Es muss i:s
sein. Siehe das Handbuch für das Datum () .
Dies hebt jedoch ein tiefer liegendes konzeptionelles Problem hervor: Eine falsche Eingabe in einem der beiden Parameter führt zu einem schwerwiegenden Fehler, was ein schlechtes Verhalten für eine Anwendung in der Produktion ist.
Aus dem Handbuch zu createFromFormat
:
Gibt bei Auftreten eines Fehlers eine neue DateTime-Instanz oder FALSE zurück.
Wenn der Aufruf kein Datum von Ihrer Eingabe erzeugt, wird kein Objekt zurückgegeben.
Um fatale Fehler bei fehlerhaften Eingaben zu vermeiden, müssten Sie (leider, da dies die nette Verkettung unterbricht) zuerst nach Erfolg suchen:
%Vor%Es sollte
sein %Vor% Siehe date
für das verwendete Format.
Sie könnten in diesem Fall auch strtotime
verwenden. Dies würde das gleiche Ergebnis liefern:
Ein anderer Weg:
%Vor% Beachten Sie, dass DateTime::createFromFormat
im Fehlerfall FALSE
zurückgibt. Sie können die Fehler mit DateTime::getLastErrors()
:
würde geben:
%Vor%Verwenden Sie s anstelle von S und m anstelle von M
und
H: M: S M ist der Kurzname des Monats und S ist der Ordinaltag (st, nd, rd, th) des Monats versuche H: i: s