Umwandeln einer Zahl in einen Monatsnamen in PHP
Beim Versuch, einen numerischen Monatswert mit PHP in den entsprechenden Namen umzuwandeln, der folgende Code wurde verwendet:
<code class="php">$monthNum = sprintf("%02s", $result["month"]); $monthName = date("F", strtotime($monthNum)); echo $monthName;</code>
Anstatt jedoch den erwarteten Monatsnamen (z. B. August) zurückzugeben, wurde fälschlicherweise „Dezember“ angezeigt. Weitere Untersuchungen ergaben, dass $result["month"] auf 8 gesetzt war und die Sprintf-Funktion eine führende Null hinzufügte, was den Wert „08“ ergab.
Empfohlene Lösung
Für moderne PHP-Versionen (>= 5.2) besteht die bevorzugte Methode darin, DateTime-Objekte für Datums-/Uhrzeitberechnungen zu verwenden. Hier ist eine erweiterte Lösung:
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
Das ! Das Formatierungszeichen setzt das Datum auf die Unix-Epoche zurück und das m-Formatzeichen stellt den numerischen Monatswert mit führenden Nullen dar.
Alternative Lösung
Für ältere PHP-Versionen ein Ein alternativer Ansatz besteht darin, mktime() zu verwenden, um einen Zeitstempel zu erstellen:
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
Denken Sie daran: Wenn Sie den abgekürzten Monatsnamen (z. B. März) bevorzugen, ersetzen Sie einfach „F“ durch „M“. Detaillierte Formatierungsoptionen finden Sie in der PHP-Handbuchdokumentation.
Das obige ist der detaillierte Inhalt vonWarum gibt `date('F')` „Dezember' zurück, wenn in PHP „08' als Monatseingabe angegeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!