怎么通过PHP判断指定月份共有几天
时间:2021-08-27
来源:互联网
今天PHP爱好者给大家带来在上一篇文章《php循环学习十:判定水仙花数,打印全部水仙花数》中,我们介绍了判定水仙花数,并使用for循环输出全部水仙花数的方法。这次我们来看看日期时间,介绍一下使用PHP怎么获得某年、某月的最大天数。希望对大家有所帮助。
本文的主题是:给定一个年份和月份,判断该月份共有几天。
我们都知道一年月份的最大天数分4种情况:
大月:31天;
小月:30天;
闰年2月:29天
平年2月:28天
而每年固定1、3、5、7、8、10、12月份为大月,而4、6、9、11月份为小月。
所以我们可以使用选择控制语句switch case
来进行一个判断选择:
当月份$month
为1、3、5、7、8、10、12则输出31;当$month
为4、6、9、11则输出30。代码可以这样写:
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;
}
测试一下:
当$month=1
,则会输出:
当$month=4
,则会输出:
说明:switch 语句会根据表达式的值,依次与 case 中的值进行比较,如果不相等,继续查找下一个 case;如果相等,就会执行对应的语句,直到 switch 语句结束或遇到 break 为止。
OK,大月和小月的判断还是很简单的,就剩下一个2月了,计算2月的天数,首先需要判断该年是不是闰年。我们可以使用下面一个函数来实现:(具体可以阅读文章《PHP如何输出20世纪的所有闰年》)
function IsLeapYear($year){
return ($year % 400 == 0 || $year % 4 == 0 && $year % 100 != 0);
}
如果给定年份是闰年则会返回true或1,如果不是闰年(是平年)则返回false或0。
然后在switch case语句中调用IsLeapYear($year)
函数来进行判断:
case 2:
echo IsLeapYear($year)? "$month 月共有29天" : "$month 月共有28天";break;
三元运算符
表达式1?表达式2:表达式3
表示:如果条件“表达式1”成立,则执行语句“表达式2”,否则执行“表达式3”。
我们还可以加一个default分支,用来在用户输入除1~12月份的数时,进行提醒:
default:echo '输入错误,请输入1-12之间的数';break;
好了,将上面的代码封装为一个功能函数:
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天<br>";break;
case 4:
case 6:
case 9:
case 11:
echo "$year 年 $month 月共有30天<br>";break;
case 2:
echo IsLeapYear($year)? "$year 年 $month 月共有29天<br>" : "$year 年 $month 月共有28天<br>";break;
default:echo '输入错误,请输入1-12之间的数<br>';break;
}
}
调用GetMaxDay($year,$month)
函数:
GetMaxDay(2000,2);
GetMaxDay(2001,2);
GetMaxDay(2001,3);
GetMaxDay(2001,4);
我们来看看输出结果:
可以看出,因为2000年是闰年,所以2月共有29天;2001年是平年,所以2月共有29天。而3月是大月,所以有31天;4月是小月,所以有30天。
以上就是怎么通过PHP判断指定月份共有几天的详细内容,更多请关注php爱好者其它相关文章!
-
新月同行新玩法-官方“落子为城”新玩法 时间:2025-05-14
-
原神最新礼包兑换码-最新官方兑换码2025年5月13日 时间:2025-05-14
-
《“我只是想问个路”——然后就被拉着聊了半小时》 时间:2025-05-14
-
币安怎么解绑谷歌验证器?-旧设备丢失后验证重置方法 时间:2025-05-14
-
七日世界检测点密码-检测点见闻任务密钥 时间:2025-05-14
-
二重螺旋致明日测试什么时候开始-测试开始时间 时间:2025-05-14
今日更新
-
PHP hyperf如何配置yasd调试环境
阅读:18
-
分享golang和vue3开发的一个im应用
阅读:18
-
浅谈Angular组件之间通信的5种方法
阅读:18
-
PHP循环学习十:判定水仙花数,打印全部水仙花数
阅读:18
-
教你怎么利用ps羽化制作透明气泡效果(共5步)
阅读:18
-
通过PHP从指定范围内的两个正整数值中找出最大值
阅读:18
-
如何通过js返回大于指定数字的数组元素
阅读:18
-
手把手教你使用ps制作破碎效果(分享)
阅读:18
-
JS字符串学习之怎么返回给定下标间的子串
阅读:18
-
PHP数组学习之使用冒泡算法对元素进行升序排序!
阅读:18