本文的主题是通过php实现:输入某年某月某日(例如2000年3月5日),计算至此一共有多少天(也可是判断这一天是这一年的第几天)。
实现思想分析:
想要计算截止3月5这一天一共有多少天,我们可以将从1月1日—3月5日的所有天数都加在一起即可。
那么就需要分别求3月之前几个月(1月和2月)的最大天数,而求一个月的最大天数我们可以使用以下函数来实现这个功能【详细的介绍,可以阅读文章《php如何利用函数来计算给定年月的最大天数》】
function getmaxday($year,$month){ $time = strtotime("{$year}-{$month}"); //取得一个日期的 unix 时间戳; $date=date("t",$time); return $date;}
测试一下:输出2000年2月的最大天数
echo getmaxday(2000,2);
因为2000年是闰年,所以2月共有29天,ok可以。
然后就需要将这些最大天数相加起来,这就需要使用循环了(我使用for循环)。一年都是从1月开始的,所以初始条件为 $i=1 ;一直要相加到指定月(3月)之前,所以限制条件为 $i<$month 。
$sum=0; for($i=1;$i<$month;$i++){ $sum += getmaxday($year,$i);}
测试一下,计算2000年3月之前的所有天数(31+29=60),看看是不是60天:
ok,功能实现了!
最后将获取的天数和$sum和指定$month的指定日$day的天数相加即可。我们来看看完整代码:
<?phpheader("content-type:text/html;charset=utf-8");$year=2000;$month=3;$day=5;//求一个月的最大天数function getmaxday($year,$month){ $time = strtotime("{$year}-{$month}"); //取得一个日期的 unix 时间戳; $date=date("t",$time); return $date;}//求总天数//求之前几个月的天数$sum=0; for($i=1;$i<$month;$i++){ $sum += getmaxday($year,$i);}$sum = $sum + $day; //加上本月的天数,就是总天数//求总天数echo "截止 $year 年 $month 月 $day 日, 一共有 $sum 天 ";?>
输出结果:
好了,将求总天数的代码封装为一个功能函数:
<?phpheader("content-type:text/html;charset=utf-8");//求一个月的最大天数function getmaxday($year,$month){ $time = strtotime("{$year}-{$month}"); //取得一个日期的 unix 时间戳; $date=date("t",$time); return $date;}//求总天数function getdays($year,$month,$day){//求之前几个月的天数$sum=0; for($i=1;$i<$month;$i++){ $sum += getmaxday($year,$i);}$sum = $sum + $day; //加上本月的天数,就是总天数//求总天数echo "截止 $year 年 $month 月 $day 日, 一共有 $sum 天<br> ";}?>
调用这个功能函数getdays($year,$month,$day)
getdays(2000,3,5);getdays(2001,3,5);getdays(2001,2,5);
我们来看看输出结果:
好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程
以上就是怎么通过php实现给定年月日计算总天数的详细内容。
