web-dev-qa-db-fra.com

Comment obtenir le nom du mois à partir d'un numéro en PHP?

J'ai une variable contenant un numéro de mois. Comment puis-je obtenir le nom du mois à partir de cette valeur?

Je sais que je pourrais définir un tableau pour $month_num => $month_name, mais je veux savoir s'il existe une fonction time dans PHP qui peut le faire, sans avoir besoin d'un tableau?

13
hd.
date("F",mktime(0,0,0,$monthnumber,1,2011));
23
Dreaded semicolon

Vous pouvez obtenir uniquement le mois textuel d'un horodatage Unix avec le caractère de format Fdate() , et vous pouvez transformer presque tous les formats de date en un horodatage Unix avec strtotime () , choisissez une année et un jour compris entre 1 et 28 (afin qu’il soit présent au cours des 12 derniers mois) et effectuez les opérations suivantes:

$written_month = date("F", strtotime("2001-$number_month-1"));

// Example - Note: The year and day are immaterial:
// 'April' == date("F", strtotime("2001-4-1"));

Exemple de travail

La bonne chose à propos de l'utilisation de strtotime() est qu'il est très flexible. Supposons donc que vous souhaitiez un tableau de noms de mois textuels commençant un mois à partir de chaque exécution du script.

<?php
for ($number = 1; $number < 13; ++$number) {

    // strtotime() understands the format "+x months"
    $array[] = date("F", strtotime("+$number months"));
}
?>

Exemple de travail

14
Peter Ajtai

Une version légèrement plus courte de la réponse acceptée est:

date('F', strtotime("2000-$monthnumber-01"));
  • F signifie "nom du mois", selon le tableau de date .

  • Le 2000 est juste un remplissage pour l'année et le 01 un remplissage pour la journée; puisque nous ne sommes préoccupés par rien d’autre que le nom du mois.

Voici une démo sur ideone.

5
Danny Beckett

Vous pouvez aussi utiliser:

jdmonthname(gregoriantojd($monthnumber, 1, 1), CAL_MONTH_GREGORIAN_LONG)

C'est juste une autre façon. Je ne sais rien de l'efficacité de ceci par rapport à la réponse de @Dreaded semicolon .

Voici une démo sur ideone.

Pour référence:

  • jdmonthame renvoie le nom du mois du calendrier julien.

  • gregoriantojd convertit une date calendaire grégorienne (actuellement utilisée) en julien (la partie 1, 1 représente le jour et l'année).

2
jmarceli

utilisez la fonction mktime qui prend les éléments de date comme paramètres.

<?php
 $month_number= 3;
 $month_name = date("F", mktime(0, 0, 0, $month_number, 10));
 echo $month_name; 
?>

Sortie: Mars

0
Dayz