Zahl in Monatsnamen in PHP konvertieren
Beim Versuch, einen numerischen Monatswert mithilfe einer Kombination aus Sprintf und Datum in den entsprechenden Namen umzuwandeln Funktionen kann es zu einem unerwarteten Problem kommen, bei dem in der Ausgabe Dezember statt des vorgesehenen Monats angezeigt wird.
Problem:
Der bereitgestellte Code $monthNum = sprintf(" s", $result["month"]); $monthName = date("F", strtotime($monthNum)); fügt dem numerischen Monatswert fälschlicherweise eine führende Null hinzu. Dies führt dazu, dass die Datumsfunktion den resultierenden Wert als Dezember statt als gewünschten Monat interpretiert.
Lösungen:
Empfohlener Ansatz:
Die empfohlene Lösung besteht darin, DateTime-Objekte für Datums- und Uhrzeitberechnungen zu verwenden. Für PHP-Versionen 5.2 und höher können Sie den folgenden Code verwenden:
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
Das ! Das Formatierungszeichen setzt alle Werte auf die Unix-Epoche zurück und das m-Format stellt die numerische Darstellung des Monats mit führenden Nullen dar.
Alternative Lösung (für ältere PHP-Versionen):
Für PHP-Versionen unter 5.2 können Sie mit der mktime-Funktion einen Zeitstempel erstellen und diesen dann als zweiten Parameter an die Datumsfunktion übergeben:
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
Hier erstellt mktime einen Zeitstempel für den ersten Tag des angegebenen Monats. Passen Sie die 10 in der Funktion an den gewünschten Tag innerhalb des Monats an.
Mithilfe dieser Lösungen können Sie numerische Monatswerte in PHP korrekt in die entsprechenden Namen umwandeln.
Das obige ist der detaillierte Inhalt vonWarum konvertiert mein PHP-Code eine Monatszahl in Dezember statt in den richtigen Monat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!