Aktueller Standort: Startseite> Neueste Artikel> Was soll ich tun, wenn Strptime Parsing in PHP fehlschlägt? Analyse gemeinsamer Fehler Ursachen und Lösungen

Was soll ich tun, wenn Strptime Parsing in PHP fehlschlägt? Analyse gemeinsamer Fehler Ursachen und Lösungen

M66 2025-06-22

In PHP wird die Funktion von Strptime () verwendet, um die Datums- und Zeitzeichenfolge in ein Array -Formular zu analysieren und das angemessene Ergebnis im angegebenen Format zurückzugeben. Diese Funktion ist in der Regel sehr nützlich, wenn es sich um Datum und zeitliche Aufgaben handelt. Während der Entwicklung kann Strptime () manchmal nicht analysiert werden, was zu einer Rückkehr falsch führt, was das Debuggen erschwert.

In diesem Artikel wird ein ausführlicher Fehler untersucht.

1. Das Eingangsformat stimmt nicht überein

Der erste Parameter von strPtime () ist die Datumszeitzeichenfolge, während der zweite Parameter die Formatzeichenfolge ist. Wenn die DateTime -Zeichenfolge nicht mit der formatierten Zeichenfolge übereinstimmt, wird Strptime () nicht richtig analysiert und gibt False zurück.

Fehlerbeispiel:

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y/%m/%d"</span></span><span>;  </span><span><span class="hljs-comment">// Falsches Format</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabefalse</span></span><span>
</span></span>

Lösung:

Stellen Sie sicher, dass die DateTime -Zeichenfolge genau mit der formatierten Zeichenfolge übereinstimmt. Wenn beispielsweise die DateTime-Zeichenfolge 2025-06-17 15:30 ist, sollte die formatierte Zeichenfolge "%y-%M-%d%H:%m" sein.

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;  </span><span><span class="hljs-comment">// Richtiges Format</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Richtige Analyse,Rückgabeergebnis</span></span><span>
</span></span>

2. Es werden nicht unterstützte Formatierungsflags verwendet

STRPTIME () unterstützt einige standardmäßige Formatierungen wie %y , %m , %d , %h , %m usw., aber manchmal begegnen Sie Entwicklern, die versuchen, nicht unterstützte Flags zu verwenden oder sie unangemessene Umstände zu verwenden.

Fehlerbeispiel:

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%G-%m-%d %H:%M"</span></span><span>;  </span><span><span class="hljs-comment">// Falsch verwendete nicht unterstützte Formatflags</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabefalse</span></span><span>
</span></span>

Lösung:

Verwenden Sie bei Verwendung von Strptime () die von PHP unterstützten Standardformatierungsflags. Wenn eine komplexere Datumsformatanalyse erforderlich ist, sollten Sie DateTime :: CreateFromFormat () anstelle von strPtime () verwenden.

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;  </span><span><span class="hljs-comment">// Richtiges Format</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Richtige Analyse,Rückgabeergebnis</span></span><span>
</span></span>

3.. Anomalie der Eingabedaten

Manchmal kann die DateTime -Zeichenfolge selbst unangemessene Zeichen enthalten, was dazu führt, dass Strptime () nicht analysieren kann. Beispielsweise enthält eine Zeichenfolge zusätzliche Leerzeichen oder ungültige Datums -Teile.

Fehlerbeispiel:

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17  15:30"</span></span><span>;  </span><span><span class="hljs-comment">// Datumszeichenfolge hat zusätzliche Räume</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabefalse</span></span><span>
</span></span>

Lösung:

Stellen Sie vor dem Übergeben von Strptime () sicher, dass Sie zusätzliche Räume oder ungültige Zeichen reinigen oder bei der Verwendung die Daten konsistent halten.

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17  15:30"</span></span><span>;
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>);  </span><span><span class="hljs-comment">// Zusätzliche Räume löschen</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Richtige Analyse,Rückgabeergebnis</span></span><span>
</span></span>

4. Problemeinstellungsproblem

Das Parsingverhalten der Strptime () -Funktion kann durch das Systemzeitraum des Systems beeinflusst werden. Wenn die Gebietsschemaseinstellungen des Systems nicht mit der Sprache/Region der Datumszeichenfolge übereinstimmen, kann das Parsen fehlschlagen.

Fehlerbeispiel:

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"17 Juin 2025 15:30"</span></span><span>;  </span><span><span class="hljs-comment">// Französisch -Datum</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%d %b %Y %H:%M"</span></span><span>;    </span><span><span class="hljs-comment">// Französischer Monat</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabefalse</span></span><span>
</span></span>

Lösung:

Stellen Sie sicher, dass bei der Verwendung von StrPtime () das Gebietsschema des Systems angemessen eingestellt oder überprüft wird, insbesondere wenn die Datumszeichenfolge den Monat oder die Woche enthält. Das aktuelle Gebietsschema kann über die SetLocale () -Funktion eingestellt werden.

 <span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_TIME, </span><span><span class="hljs-string">'fr_FR.UTF-8'</span></span><span>);  </span><span><span class="hljs-comment">// Auf Französisch eingestellt</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"17 Juin 2025 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%d %b %Y %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);  </span><span><span class="hljs-comment">// Richtige Analyse,Rückgabeergebnis</span></span><span>
</span></span>

5. Verwenden Sie die DateTime -Klasse von PHP als Alternative

Obwohl Strptime () nützlich ist, sind seine Funktionen und Flexibilität im Vergleich zur DateTime -Klasse von PHP etwas unzureichend. Wenn Sie auf das Problem des Problems von StrPtime () auflösende Auflösungsfehler mehrmals begegnen, können Sie die Methode DateTime :: CreateFromFormat () verwenden, die eine leistungsstärkere Funktion zur Auflösung von Datumszeit bietet.

Beispiel:

 <span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"Y-m-d H:i"</span></span><span>;  </span><span><span class="hljs-comment">// verwendenDateTimeAnalyse</span></span><span>
</span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-variable">$date</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$datetime</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$datetime</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabe日期对象</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Analyse失败"</span></span><span>;
}
</span></span>

Die DateTime :: CreateFromFormat () -Methode unterstützt nicht nur ein breiteres Format, sondern bietet auch mehr Fehlerbehandlungsfunktionen, was es den Entwicklern für die Debugie bequemer macht.

Zusammenfassen

Bei der Verwendung von Strptime () umfassen die häufigen Gründe für das Parsen -Fehler die Format -Nichtübereinstimmung, die Verwendung nicht unterstützter Formatierungsflags, Eingabedatenausnahmen, Probleme mit Zeitbereichseinstellungen usw. Um diese Probleme zu lösen, können Entwickler die Genauigkeit verbessern und die Stabilität des Parsens sicherstellen, die Anpassung des Formats festlegen, die richtigen Lokala und Berücksichtigung der Dattetime -Klassen einstellen. Für komplexere Anforderungen an das Parsing an die Datum der Zeit ist die DateTime -Klasse eine modernere und leistungsstarke Alternative.