Maison  >  Article  >  développement back-end  >  Pourquoi mon code PHP renvoie-t-il « décembre » au lieu de « août » lors de la conversion du mois numéro 8 en nom de mois ?

Pourquoi mon code PHP renvoie-t-il « décembre » au lieu de « août » lors de la conversion du mois numéro 8 en nom de mois ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 10:51:02829parcourir

Why is my PHP code returning

Convertir le numéro en nom de mois en PHP

Problème :

Vous avez implémenté un code pour convertir un numéro de mois en un nom du mois en PHP, mais il renvoie un résultat incorrect. Plus précisément, le code renvoie "Décembre" au lieu de "Août" lorsque le numéro du mois est 8.

Analyse :

Le problème vient du fait que le sprintf La fonction ajoute un zéro non significatif au numéro du mois, ce qui donne "08" au lieu de "8". Cela amène la fonction de date à interpréter l'entrée comme la représentation numérique d'un mois avec un zéro non significatif, qui correspond à décembre au lieu d'août.

Solution recommandée :

Pour résoudre ce problème, il est recommandé d'utiliser des objets DateTime pour toute tâche de manipulation de date/heure. Pour les versions PHP >= 5.2, 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 tout à l'époque Unix, et le caractère de format m représente la représentation numérique d'un mois avec des zéros non significatifs.

Solution alternative (pour les versions PHP < 5.2) :

Alternativement, si vous ne pouvez pas passer à une version plus récente de PHP, vous pouvez utiliser le code suivant :

<code class="php">$monthNum  = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>

Ici, le deuxième paramètre de la fonction date accepte un horodatage. La fonction mktime est utilisée pour créer un horodatage représentant le numéro du mois et le jour spécifiés (dans ce cas, le 10ème jour du mois). Pour obtenir le nom du mois à 3 lettres (par exemple, Mar), remplacez le caractère au format F par M.

Informations supplémentaires :

Le manuel PHP fournit une liste complète de toutes les options de formatage disponibles pour la fonction date.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn