DateTime :: createFromFormat - PHP-Format Problem

8

PHP - DateTime :: createFromFormat - Gibt ein neues DateTime-Objekt zurück, das im angegebenen Format formatiert ist.

das funktioniert:

%Vor%

aber das scheitert mit

  

Aufruf einer Memberfunktion getTimestamp () für ein Nicht-Objekt

%Vor%     
roger rover 12.08.2010, 11:54
quelle

4 Antworten

14

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%     
Pekka 웃 12.08.2010 11:56
quelle
7

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:

%Vor%

Ein anderer Weg:

%Vor%

Beachten Sie, dass DateTime::createFromFormat im Fehlerfall FALSE zurückgibt. Sie können die Fehler mit DateTime::getLastErrors() :

holen %Vor%

würde geben:

%Vor%     
Artefacto 12.08.2010 11:59
quelle
0

Verwenden Sie s anstelle von S und m anstelle von M

  • s - Sekunden, mit führenden Nullen
  • S - Englische Ordnungssilbe für die Tag des Monats, 2 Zeichen mögen st, nd, rd oder th

und

  • m - Numerische Darstellung eines
    Monat, mit führenden Nullen
  • M - kurze textliche Darstellung von a Monat, drei Buchstaben wie Jan durch Dez
codaddict 12.08.2010 11:57
quelle
0

H: M: S M ist der Kurzname des Monats und S ist der Ordinaltag (st, nd, rd, th) des Monats versuche H: i: s

    
Mark Baker 12.08.2010 11:58
quelle

Tags und Links