PHP - DateTime::createFromFormat — Gibt die neue DateTime-Objekt formatiert gemäß dem angegebenen format
dies funktioniert:
$var = DateTime::createFromFormat('Ymd','20100809')->getTimestamp();
aber dieser schlägt mit
Rufen Sie an eine member-Funktion getTimestamp() on a non-object
$var = DateTime::createFromFormat('Y/m/d H:M:S','2010/08/09 07:47:00')->getTimestamp();
In dem Fall bei der hand, der
M:S
Teil ist falsch. Es mussi:s
. Finden Sie die Handbuch auf Datum().Jedoch, dies unterstreicht ein tiefer konzeptionelles problem: Eine falsche Eingabe in einen der beiden parameter, führen zu einem fatalen Fehler, der schlechtes Verhalten für eine Anwendung in der Produktion.
Aus der Anleitung auf
createFromFormat
:Wenn der Anruf nicht zu bauen, ein Datum aus Ihrer Eingabe kein Objekt zurückgegeben.
Vermeiden Sie schwerwiegende Fehler, die auf falsche Eingaben, Sie würde (leider, da dies bricht die schöne chaining) prüfen müssen ersten Erfolg:
m:s
;i:s
.m
ist für Motten.Sollte es
Sehen
date
für das format.Könnten Sie auch
strtotime
in diesem Umstand. Das würde das gleiche Ergebnis:Einen anderen Weg:
Beachten Sie, dass
DateTime::createFromFormat
zurückFALSE
auf Fehler. Holen Sie die Fehler mitDateTime::getLastErrors()
:geben würde:
Verwenden s statt S
und m statt M
Tag des Monats, 2 Charaktere, wie
st, nd, rd oder th
und
Monats, mit führenden Nullen
Monat, drei Buchstaben wie Jan durch
Dez
H:M:S
M ist der Monat kurzer name, und N ist die Ordnungszahl (st, nd,rd,th) Tag des Monats
versuchen Sie, H:i:s