您好,登錄后才能下訂單哦!
這篇文章主要講解了“PHP怎么計(jì)算一段時(shí)間內(nèi)有多少天”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP怎么計(jì)算一段時(shí)間內(nèi)有多少天”吧!
本文的主題是:給定一個(gè)年月日,計(jì)算截止這一天一共有多少天。
這要怎么計(jì)算?沒有思路是不是,我們換個(gè)方向,簡(jiǎn)化一下,不就是求 x年1月1日——x年x月x日之間隔了多少天,也就是求兩個(gè)日期的時(shí)間差。那么怎么求時(shí)間差呢?
我們需要先將兩個(gè)日期:x年1月1日 和 x年x月x日 轉(zhuǎn)換為 時(shí)間戳
$startdate = strtotime("{$year}-01-01"); $enddate = strtotime("{$year}-{$month}-{$day}");
然后將兩個(gè)時(shí)間戳相減(結(jié)束時(shí)間 - 起始時(shí)間)
$diff_seconds = $enddate-$startdate;
這樣就會(huì)得到兩個(gè)日期的時(shí)間差,但此時(shí)還是以秒為單位計(jì)數(shù)的,不利于閱讀。
因?yàn)橐惶煊?4小時(shí),1小時(shí)有60分鐘,1分鐘有60秒;換算一下24*60*60=86400
,因此1天有86400秒。
將時(shí)間差$diff_seconds除以86400,在使用floor()向下舍入為最接近的整數(shù)
$time = floor(($diff_seconds)/86400);
此時(shí)獲取到的是相差天數(shù),不包括x月x日這一天,要再加1,才是截止某年某月某日的總天數(shù)。
我們來看看完整代碼:
function GetDays($year,$month,$day){ $startdate = strtotime("{$year}-01-01"); $enddate = strtotime("{$year}-{$month}-{$day}"); $diff_seconds = $enddate-$startdate; $time = floor(($diff_seconds)/86400); $day = $time+1; echo "截止{$year}-{$month}-{$day} 共有 {$day} 天<br>"; }
測(cè)試一下:計(jì)算截止2000-3-5的總天數(shù)(因?yàn)?000年是閏年,所以31+29+5=65)
GetDays(2000,3,5);
輸出結(jié)果為:
OK,總天數(shù)是正確的!利用GetDays($year,$month,$day)函數(shù),我們還可以計(jì)算一年的總天數(shù)
GetDays(2000,12,31); GetDays(2021,12,31);
輸出結(jié)果為:
感謝各位的閱讀,以上就是“PHP怎么計(jì)算一段時(shí)間內(nèi)有多少天”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)PHP怎么計(jì)算一段時(shí)間內(nèi)有多少天這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。