Maison > Article > développement back-end > Pourquoi `date('F')` renvoie-t-il « décembre » lorsqu'il est donné « 08 » comme entrée de mois en PHP ?
Conversion d'un numéro en nom de mois en PHP
Dans une tentative de convertir une valeur numérique de mois en son nom correspondant à l'aide de PHP, le code suivant était employé :
<code class="php">$monthNum = sprintf("%02s", $result["month"]); $monthName = date("F", strtotime($monthNum)); echo $monthName;</code>
Cependant, au lieu de renvoyer le nom du mois attendu (par exemple, août), il affichait par erreur « décembre ». Une enquête plus approfondie a révélé que $result["month"] était défini sur 8 et que la fonction sprintf a ajouté un zéro non significatif, ce qui a donné la valeur "08".
Solution recommandée
Pour les versions PHP modernes (>= 5.2), la méthode préférée consiste à utiliser des objets DateTime pour les calculs de date/heure. Voici une solution améliorée :
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
Le ! Le caractère de formatage réinitialise la date à l'époque Unix et le caractère de format m représente la valeur numérique du mois avec des zéros non significatifs.
Solution alternative
Pour les anciennes versions de PHP, un une autre approche consiste à utiliser mktime() pour créer un horodatage :
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
N'oubliez pas que si vous préférez le mois abrégé nom (par exemple, Mar), remplacez simplement « F » par « M ». Les options de formatage détaillées peuvent être trouvées dans la documentation du manuel PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!