Was ist das richtige Format, um eine PHP-DateTime-Instanz von „2016.04.30 PM 7:30“ über DateTime::createFromFormat zu erstellen?
Lesezeit: 2 Minuten
Lee Han Kyeol
Ich arbeite derzeit an einem WordPress-Projekt, bei dem ich einige benutzerdefinierte Post-Metadaten erhalten und in eine DateTime Beispiel, und rechnen Sie damit.
Wenn ich echo die get_post_meta sieht wie folgt aus.
2016.04.30 Uhr 19:30
Das Format, das ich verwende, um a zu erhalten DateTime Beispiel ist wie folgt.
Ymd A g:i
Aber der Rückgabewert von DateTime::createFromFormat ist false.
Das Ergebnis ist False format: 2016.04.30 PM 7:30.
Was fehlt mir hier? Ich denke, es muss etwas Triviales sein, aber ich komme nicht durch.
Beim Testen stellte ich fest, dass das Problemzeichen im Format das ‘A’ war. Also habe ich herumgestöbert und das gefunden Fehler in PHP (Das ist anscheinend überhaupt kein Fehler!)
Durch die gehen Quellcodees sieht so aus, als würde es AM und PM erst parsen, nachdem bereits eine Stunde geparst wurde.
Wahrscheinlich wäre es am besten, einen regulären Ausdruck schnell zu durchlaufen, um die AM/PM an das Ende zu verschieben:
Vergessen Sie nicht, den Formatstring von zu ändern 'Y.m.d A g:i' zu 'Y-m-d g:i A' in deinem beispiel.
– David Weiß
22. April 2016 um 4:46 Uhr
13701200cookie-checkWas ist das richtige Format, um eine PHP-DateTime-Instanz von „2016.04.30 PM 7:30“ über DateTime::createFromFormat zu erstellen?yes