PHP如何利用函数来计算给定年月的最大天数-阿里云开发者社区

开发者社区> dasein58> 正文

PHP如何利用函数来计算给定年月的最大天数

简介: 在上一篇文章《怎么通过PHP判断指定月份共有几天》中,我们介绍了使用switch case语句分情况获取某年某月最大天数的方法;在switch case语句中,对于2月,还需要先判断该年是不是闰年,才可获取最大天数,这有点麻烦! 那么如何简洁高效的计算给定月份共有几天,获取某年、某月的最大天数呢?其实PHP内置的date() 函数就可以解决这个问题! date() 函数可以将指定Unix 时间戳格式化为本地日期和时间,只需要设置输出格式为“t”,即可返回给定月份中包含的天数。
+关注继续查看

在上一篇文章《怎么通过PHP判断指定月份共有几天》中,我们介绍了使用switch case语句分情况获取某年某月最大天数的方法;在switch case语句中,对于2月,还需要先判断该年是不是闰年,才可获取最大天数,这有点麻烦!
那么如何简洁高效的计算给定月份共有几天,获取某年、某月的最大天数呢?其实PHP内置的date() 函数就可以解决这个问题!

date() 函数可以将指定Unix 时间戳格式化为本地日期和时间,只需要设置输出格式为“t”,即可返回给定月份中包含的天数。

我们来试试:

<?php
header("Content-type:text/html;charset=utf-8");
$time="2000-2";
$date=date("t",$time);
echo "$time 月共有 $date 天
";
?>
看看输出结果:

1.png

报错且输出的最大天数不对,这是为什么呢?回去看看上文,可以发现:

date() 函数接受的$time参数必须是一个Unix 时间戳格式的日期时间,我们需要将字符串类型的时间"2000-2"解析为 Unix 时间戳格式。

这就需要使用strtotime() 函数了,该函数可以将任何英文文本的日期或时间描述解析为 Unix 时间戳。

因此PHP程序可以写成:

<?php
header("Content-type:text/html;charset=utf-8");
$i="2000-2";
$time=strtotime("$i"); //取得一个日期的 Unix 时间戳;
$date=date("t",$time);
echo "$i 月共有 $date 天
";
?>
我们看看输出结果:

2.png

因为2000年是一个闰年,所以2月共有29天。OK!输出正确。

我们将其写成一个功能函数:

<?php
function GetMaxDay($year,$month){
$time = strtotime("{$year}-{$month}"); //取得一个日期的 Unix 时间戳;
$date=date("t",$time);
echo "$year 年 $month 月共有 $date 天
";
}
?>
调用GetMaxDay($year,$month)获取某年、某月的最大天数

GetMaxDay(1996,2);
GetMaxDay(2000,2);
GetMaxDay(2001,2);
GetMaxDay(2001,3);
GetMaxDay(2001,4);
输出结果为:

3.png

其实,PHP中不止strtotime() 函数可以解析日期,返回一个日期的 UNIX 时间戳;mktime() 函数也可以。

下面我们来改写一下GetMaxDay()函数,在里面利用mktime() 函数来取得一个日期的 Unix 时间戳

<?php
header("Content-type:text/html;charset=utf-8");
function GetMaxDay($year,$month){
$time = mktime(20,20,20,$month,1,$year); //取得一个日期的 Unix 时间戳;
$date=date("t",$time);
echo "$year 年 $month 月共有 $date 天
";
}
GetMaxDay(1996,2);
GetMaxDay(2000,2);
GetMaxDay(2001,2);
GetMaxDay(2001,3);
GetMaxDay(2001,4);
?>
输出结果为:

4.png

可以看出:mktime(20,20,20,$month,1,$year)函数需要指定6个参数,分别为小时、分钟、秒钟、月份、天数、年份。其中小时、分钟、秒钟可以随便设置,月份和年份就是我们给定的$month和$year,而天数就可设置为1(只要值不超过28就行)。

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

以上就是PHP如何利用函数来计算给定年月的最大天数的详细内容,更多请关注富贵论坛www.fgba.net其它相关文章!

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

相关文章
硬核,这 3 款 IDE 插件让你的代码牢不可破(2)
硬核,这 3 款 IDE 插件让你的代码牢不可破
3 0
编程语言基础知识详细总结之数组,编程知识点你必要掌握(十二)
  学好编程从基础开始,下面是总结的关于编程的一些小知识,如果你也喜欢编程,那就加入我们吧,持续分享c语言,java,php,html等编程的小知识,欢迎关注趣IT科技。   数组: 存放的类型是一致的。多个数组元素的地址是连续的。   一维数组的初始化:   int a[5]={1,2,3,4,5}; 合法   int a[5]={1,2,3, }; 合法   int a[]={1,2,3,4,5}; 合法,常考,后面决定前面的大小!   int a[5]={1,2,3,4,5,6}; 不合法,赋值的个数多余数组的个数了
2 0
微信公众号开发之服务器接入指南之Java版本
微信公众号开发之服务器接入指南之Java版本
6 0
分布式日志收集框架Flume下载安装与使用(四)
分布式日志收集框架Flume下载安装与使用(四)
4 0
编程开发PHP循环结构解析
  2.2.1、while语句   和 if 语句一样,可以在 while 循环中用花括号括起一个语句组,或者用替代语法:   while (expr):   statement   …   endwhile;   while语句可以像if语句一样嵌套,但是建议不要超过三层
4 0
SAP Hybris-as-a-Service的练习教程之环境搭建
SAP Hybris-as-a-Service的练习教程之环境搭建
4 0
Docker镜像超详细介绍
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
6 0
如何让面试官相信你真的会Linux,常见Linux命令汇总
今天和大家聊聊面试,其实在短短的半小时时间,根本不可能了解一个真实的技术水平,所以面试官开始面试造火箭,工作拧螺丝。 上有政策,下有对策,我们完全可以突击面试题,将自己包装成高级程序员,“骗”过面试官。
3 0
数据库优化 | 学习笔记
快速学习数据库优化
9 0
+关注
507
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载