Umwandeln, Datetime PHP
Ich habe eine datetime-Zeichenfolge als solche 14/04/2014 4:57:16 PM
und ich bin mit carbon datetime zu arbeiten.
Allerdings, sobald ich versuche, dies zu tun
$dt = Carbon::createFromTimestampUTC($encDateTime);
Allerdings bin ich immer der parse-Fehler aufgetreten : DateTime::__construct(): Failed to parse time string (@14/04/2014 5:03:45 PM ) an position 3 (/): Unexpected character.
Udpate :
Ich habe versucht, dies zu tun :
$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));
und bekomme ich die folgende Fehlermeldung
Rufen Sie an eine member-Funktion format() on a non-object
Können Sie mir bitte helfen mit diesem?
Dank
- Was bedeutet
var_dump($encDateTime);
Ausgang? - es gibt diese : 14/04/2014 4:57:16 PM
var_dump()
würde nie zurückkehren. Was ist die genaue Ausgabe?- auch ich könnte mich irren aber in deinem update, das Sie verwendet, H was bedeutet eine 2-stellige Stunde, anstelle von h - und dies könnte Folge in die Zeichenfolge nicht korrekt analysiert
- Ich bin ziemlich sicher, dass seine Rückkehr mich diese : string(22) "14/04/2014 5:13:18 Uhr" .. Wenn Sie könnten bitte lassen Sie mich wissen, was Sie erwartet hatten, vielleicht kann ich dann liefern relevante Antworten - danke
- Auch vergessen die Sekunden. Versuchen
'd/m/Y H:i:s A'
- Dort gehen Sie. Sie haben einen extra Raum am Ende des datetime-Zeichenfolge. Versuchen Sie dies:
$date = DateTime::createFromFormat('d/m/Y H:i A', trim($encDateTime));
. - wenn ich versuche, dass es code gibt mir Falsch.. 🙁
- UTC ist ein Zeit-zone, kein format.
- Haben Sie versucht, die Kleinbuchstaben h, ich.e-DateTime::createFromFormat('d/m/Y h:i:s A', trim($encDateTime)); H steht für eine zweistellige Stundenangabe wie ich schon sagte, vor 10 Minuten. Ich habe bereits getestet und bewiesen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Datums-Zeichenfolge enthält ein Leerzeichen am Ende - das ist der Grund, warum
DateTime::createFromFormat()
fehl analysieren. Entfernen Sie die zusätzliche whitespace-Zeichen am Anfang und/oder Ende, Sie könnte verwendentrim()
.Auch, Sie waren ursprünglich mit
H
, die die 24-Stunden-format mit führenden Nullen. In diesem Fall, es sieht aus wie Sie eine 12-Stunden-format verwenden, sog
statt (h
funktionieren würde, auch).Sollten die folgenden arbeiten:
Wenn Sie erhalten diese Fehler, immer
var_dump()
die Werte. Auf diese Weise können Sie prüfen, ob die variable enthält, was Sie denken, es tut.Die statische Methode
createFromFormat
von DateTime zurückNULL
wenn es einen parse error. Das format, das gegeben wurde (d/m/Y H:i A
) falsch war. Daher der Fehler "Rufen Sie an eine member-Funktionformat()
auf einem nicht-Objekt".Können Sie erstellen, die DateTime-Objekte von nicht-standard-timestrings wie diese:
Den verschiedenen format-Zeichen zur Verfügung stehen und deren Erklärungen finden Sie in die Dokumentation für
date()
.Failed to parse time string (@14/04/2014 5:03:45 PM ) at position 3 (/): Unexpected character.
Ich weiß nichts über Carbon, aber das funktioniert. Sie wurden mit einer zweistelligen (H) statt h (edit: g ist genau die gleiche Sache) in Ihrem createFromFormat Methode:
Ergebnis:
h
muss eing
. Tut mir Leid.14/04/2014 4:57:16
. Wo ist die führende null?g
steht für12-hour format of an hour without leading zeros
undh
steht für12-hour format of an hour with leading zeros
. Also 4:47:16 ist ing:i:s
- format. Ich bin nur ehrlich.verwenden Sie einfach laravel Datum Funktion als: