Maison > Article > développement back-end > Pourquoi mon code PHP convertit-il un numéro de mois en décembre au lieu du mois correct ?
Convertir un numéro en nom de mois en PHP
Lors de la tentative de conversion d'une valeur numérique de mois en son nom correspondant à l'aide d'une combinaison de sprintf et de date fonctions, vous pouvez rencontrer un problème inattendu où la sortie affiche décembre au lieu du mois prévu.
Problème :
Le code fourni, $monthNum = sprintf(" s", $result["mois"]); $monthName = date("F", strtotime($monthNum));, ajoute par erreur un zéro non significatif à la valeur numérique du mois. Cela amène la fonction de date à interpréter la valeur résultante comme décembre au lieu du mois souhaité.
Solutions :
Approche recommandée :
La solution recommandée consiste à utiliser des objets DateTime pour les calculs de date et d'heure. Pour les versions PHP 5.2 et supérieures, vous pouvez utiliser le code suivant :
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
Le ! Le caractère de formatage réinitialise toutes les valeurs à l'époque Unix et le format m représente la représentation numérique du mois avec des zéros non significatifs.
Solution alternative (pour les anciennes versions de PHP) :
Pour les versions PHP inférieures à 5.2, vous pouvez utiliser la fonction mktime pour créer un horodatage puis le passer comme deuxième paramètre à la fonction date :
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
Ici, mktime crée un horodatage pour le premier jour du mois spécifié. Ajustez le 10 dans la fonction au jour souhaité dans le mois.
En utilisant ces solutions, vous pouvez convertir correctement les valeurs numériques du mois en leurs noms correspondants en 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!