Maison > Article > développement back-end > Comment déterminer le nombre de jours dans un mois spécifié via PHP
Dans l'article précédent "boucle php apprendre dix : déterminer le nombre de narcisses et imprimer le nombre de toutes les jonquilles", nous avons présenté la méthode de détermination du nombre de jonquilles et d'utilisation d'une boucle for pour afficher le nombre de toutes les jonquilles. Cette fois, nous examinerons la date et l'heure et présenterons comment utiliser PHP pour obtenir le nombre maximum de jours dans une année ou un mois donné.
Le sujet de cet article est : étant donné une année et un mois, déterminez combien de jours il y a dans le mois.
Nous savons tous que le nombre maximum de jours dans un mois est divisé en 4 situations :
Grand mois : 31 jours
Petit mois : 30 jours ; jours
Février dans les années ordinaires : 28 jours
Et chaque année, janvier, mars, mai, juillet, août, octobre et décembre sont fixés comme de grands mois, tandis qu'avril, juin, septembre et novembre sont des petits mois.
changer de cas
pour effectuer une sélection de jugement : Lorsque le mois $mois
est 1, 3, 5, 7, 8, 10, 12 affichera 31 ; lorsque $month
est 4, 6, 9 ou 11, 30 sera affiché. Le code peut être écrit comme ceci :
switch($month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: echo "$month 月共有31天";break; case 4: case 6: case 9: case 11: echo "$month 月共有30天";break; }
Testez-le : switch case
来进行一个判断选择:
当月份$month
为1、3、5、7、8、10、12则输出31;当$month
为4、6、9、11则输出30。代码可以这样写:
function IsLeapYear($year){ return ($year % 400 == 0 || $year % 4 == 0 && $year % 100 != 0); }
测试一下:
当$month=1
,则会输出:
当$month=4
,则会输出:
说明:switch 语句会根据表达式的值,依次与 case 中的值进行比较,如果不相等,继续查找下一个 case;如果相等,就会执行对应的语句,直到 switch 语句结束或遇到 break 为止。
OK,大月和小月的判断还是很简单的,就剩下一个2月了,计算2月的天数,首先需要判断该年是不是闰年。我们可以使用下面一个函数来实现:(具体可以阅读文章《PHP如何输出20世纪的所有闰年》)
case 2: echo IsLeapYear($year)? "$month 月共有29天" : "$month 月共有28天";break;
如果给定年份是闰年则会返回true或1,如果不是闰年(是平年)则返回false或0。
然后在switch case语句中调用IsLeapYear($year)
函数来进行判断:
表达式1?表达式2:表达式3
三元运算符
default:echo '输入错误,请输入1-12之间的数';break;表示:如果条件“表达式1”成立,则执行语句“表达式2”,否则执行“表达式3”。
我们还可以加一个default分支,用来在用户输入除1~12月份的数时,进行提醒:
function IsLeapYear($year){ return ($year % 400 == 0 || $year % 4 == 0 && $year % 100 != 0); } function GetMaxDay($year,$month) { switch($month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: echo "$year 年 $month 月共有31天
";break; case 4: case 6: case 9: case 11: echo "$year 年 $month 月共有30天
";break; case 2: echo IsLeapYear($year)? "$year 年 $month 月共有29天
" : "$year 年 $month 月共有28天
";break; default:echo '输入错误,请输入1-12之间的数
';break; } }
好了,将上面的代码封装为一个功能函数:
GetMaxDay(2000,2); GetMaxDay(2001,2); GetMaxDay(2001,3); GetMaxDay(2001,4);
调用GetMaxDay($year,$month)
$month=1
, il affichera : Quand $month=4
, il affichera :
Remarque : l'instruction switch la comparera tour à tour avec la valeur du cas en fonction de la valeur de l'expression, si elles ne sont pas égales, continuez à rechercher le cas suivant si elles sont égales, l'instruction correspondante le fera. être exécuté jusqu'à la fin de l'instruction switch ou jusqu'à ce qu'une pause soit rencontrée. OK, le jugement des grands et des petits mois est encore très simple. Il ne reste qu'un mois de février. Pour calculer le nombre de jours en février, il faut d'abord juger si l'année est bissextile. . Nous pouvons utiliser la fonction suivante pour y parvenir : (Pour plus de détails, vous pouvez lire l'article "Comment PHP affiche le 20ème siècle Toutes les années bissextiles
》)🎜rrreee🎜Si l'année donnée est une année bissextile, elle retournera vrai ou 1, si ce n'est pas une année bissextile (c'est une année ordinaire), elle retournera faux ou 0. 🎜🎜Appelez ensuite la fonctionIsLeapYear($year)
dans l'instruction switch case pour porter un jugement : 🎜🎜rrreee🎜L'opérateur ternaire🎜🎜rrreee🎜 signifie : si la condition "expression 1 " Si c'est vrai, exécutez l'instruction "Expression 2", sinon exécutez "Expression 3". 🎜🎜Nous pouvons également ajouter une branche par défaut pour rappeler à l'utilisateur lors de la saisie d'un nombre autre que 1 à 12 mois : 🎜rrreee🎜OK, encapsulez le code ci-dessus dans une fonction fonctionnelle : 🎜rrreee🎜 Appelez le
Fonction GetMaxDay ($year, $month)
: 🎜🎜rrreee🎜 Jetons un coup d'œil au résultat : 🎜🎜🎜🎜🎜🎜 On peut voir que parce que 2000 est une année bissextile, il y en a 29 en février. ; 2001 est une année ordinaire, il y a donc 29 jours en février. Mars est un grand mois, donc il compte 31 jours ; avril est un petit mois, donc il compte 30 jours. 🎜🎜D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo 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!