开发者社区> dasein58> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

怎么通过PHP实现给定年月日计算总天数

简介: 在之前的文章《PHP数组学习之使用冒泡算法对元素进行升序排序!》中,我们介绍了使用冒泡算法对数组元素进行升序排序的方法。这次我们来看看使用PHP如何实现给定年月日计算是这一年的第几,感兴趣的朋友可以学习了解一下~ 本文的主题是通过PHP实现:输入某年某月某日(例如2000年3月5日),计算至此一共有多少天(也可是判断这一天是这一年的第几天)。
+关注继续查看

在之前的文章《PHP数组学习之使用冒泡算法对元素进行升序排序!》中,我们介绍了使用冒泡算法对数组元素进行升序排序的方法。这次我们来看看使用PHP如何实现给定年月日计算是这一年的第几,感兴趣的朋友可以学习了解一下~
本文的主题是通过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);
1.png

因为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天:

3.png

OK,功能实现了!

最后将获取的天数和$sum和指定$month的指定日$day的天数相加即可。我们来看看完整代码:

<?php
header("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 天 ";
?>
输出结果:

4.png

好了,将求总天数的代码封装为一个功能函数:

<?php
header("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 天
";
}
?>
调用这个功能函数GetDays($year,$month,$day)

GetDays(2000,3,5);
GetDays(2001,3,5);
GetDays(2001,2,5);
我们来看看输出结果:

3.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

以上就是怎么通过PHP实现给定年月日计算总天数的详细内容,更多请关注富贵论坛www.fgba.net其它相关文章!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
centos架设lamp环境 php+mysql+httpd+vsftp
注意:如果让httpd支持php需要修改httpd.conf的以下 1.检查apache的配置文件看是否加载了libphp5.so模块,若没有就添加 LoadModule php5_module        modules/libphp5.so 2.在<IfModule mime_module>模块中看是否添加有php页面,若没有就添加 Add
2290 0
php遍历mysql资源
mysql_query('use test');             //选库 mysql_query('set names utf8');        //编码 $sql="select * from user";          //获取sql资源while...
681 0
php+mysql简单留言,适合新手
php留言板 p,textarea{vertical-align:top;} 名字: 留言: 说: 下面是php脚本
837 0
阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
(原创出处为本博客,http://www.cnblogs.com/linguanh/)   目录:   一,下载   二,解压   三,配置与启动   四,测试 Redis   五,配置 phpRedis 扩展   六,综合测试   前序    Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。
1313 0
【第二届PHP全球开发者大会】MySQL中文网站创始人叶金荣:程序猿都该知道的MySQL秘籍
5月14-15日的第二届2016PHP全球开发者大会在北京国际会议中心举行。MySQL中文网站创始人、Oracle MySQL ACE叶金荣带来的分享是《程序猿都该知道的MySQL秘籍》,他主要介绍了MySQL的优化秘籍,并对InnoDB引擎做了深入的讲解;同时与大家分享了在MySQL的优化过程中所
3631 0
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
3125 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
PHP安全开发_从白帽角度做安全
立即下载
yqdh_58c127bb3e4...1510402406.pdf
立即下载