在上一篇文章《怎么通過(guò)PHP判斷指定月份共有幾天》中,我們介紹了使用switch case語(yǔ)句分情況獲取某年某月最大天數(shù)的方法;在switch case語(yǔ)句中,對(duì)于2月,還需要先判斷該年是不是閏年,才可獲取最大天數(shù),這有點(diǎn)麻煩!
那么如何簡(jiǎn)潔高效的計(jì)算給定月份共有幾天,獲取某年、某月的最大天數(shù)呢?其實(shí)PHP內(nèi)置的date() 函數(shù)就可以解決這個(gè)問(wèn)題!
date() 函數(shù)可以將指定Unix 時(shí)間戳格式化為本地日期和時(shí)間,只需要設(shè)置輸出格式為“t
”,即可返回給定月份中包含的天數(shù)。
我們來(lái)試試:
<?php header("Content-type:text/html;charset=utf-8"); $time="2000-2"; $date=date("t",$time); echo "$time 月共有 $date 天<br>"; ?>
看看輸出結(jié)果:
報(bào)錯(cuò)且輸出的最大天數(shù)不對(duì),這是為什么呢?回去看看上文,可以發(fā)現(xiàn):
date() 函數(shù)接受的$time
參數(shù)必須是一個(gè)Unix 時(shí)間戳格式的日期時(shí)間,我們需要將字符串類型的時(shí)間"2000-2"解析為 Unix 時(shí)間戳格式。
這就需要使用strtotime() 函數(shù)了,該函數(shù)可以將任何英文文本的日期或時(shí)間描述解析為 Unix 時(shí)間戳。
因此PHP程序可以寫(xiě)成:
<?php header("Content-type:text/html;charset=utf-8"); $i="2000-2"; $time=strtotime("$i"); //取得一個(gè)日期的 Unix 時(shí)間戳; $date=date("t",$time); echo "$i 月共有 $date 天<br>"; ?>
我們看看輸出結(jié)果:
因?yàn)?000年是一個(gè)閏年,所以2月共有29天。OK!輸出正確。
我們將其寫(xiě)成一個(gè)功能函數(shù):
<?php function GetMaxDay($year,$month){ $time = strtotime("{$year}-{$month}"); //取得一個(gè)日期的 Unix 時(shí)間戳; $date=date("t",$time); echo "$year 年 $month 月共有 $date 天<br>"; } ?>
調(diào)用GetMaxDay($year,$month)
獲取某年、某月的最大天數(shù)
GetMaxDay(1996,2); GetMaxDay(2000,2); GetMaxDay(2001,2); GetMaxDay(2001,3); GetMaxDay(2001,4);
輸出結(jié)果為:
其實(shí),PHP中不止strtotime() 函數(shù)可以解析日期,返回一個(gè)日期的 UNIX 時(shí)間戳;mktime() 函數(shù)也可以。
下面我們來(lái)改寫(xiě)一下GetMaxDay()函數(shù),在里面利用mktime() 函數(shù)來(lái)取得一個(gè)日期的 Unix 時(shí)間戳
<?php header("Content-type:text/html;charset=utf-8"); function GetMaxDay($year,$month){ $time = mktime(20,20,20,$month,1,$year); //取得一個(gè)日期的 Unix 時(shí)間戳; $date=date("t",$time); echo "$year 年 $month 月共有 $date 天<br>"; } GetMaxDay(1996,2); GetMaxDay(2000,2); GetMaxDay(2001,2); GetMaxDay(2001,3); GetMaxDay(2001,4); ?>
輸出結(jié)果為:
可以看出:mktime(20,20,20,$month,1,$year)
函數(shù)需要指定6個(gè)參數(shù),分別為小時(shí)、分鐘、秒鐘、月份、天數(shù)、年份。其中小時(shí)、分鐘、秒鐘可以隨便設(shè)置,月份和年份就是我們給定的$month
和$year
,而天數(shù)就可設(shè)置為1(只要值不超過(guò)28就行)。
好了就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程