首頁  >  文章  >  後端開發  >  PHP函數運用之計算截止某年某月某日共有多少天

PHP函數運用之計算截止某年某月某日共有多少天

青灯夜游
青灯夜游原創
2021-08-19 17:23:542722瀏覽

在先前的文章《怎麼透過PHP實現給定年月日計算總天數》中,我們介紹了一種給定年月日計算總天數的方法。這次我們來簡化一下方法,帶大家了解一下借助strtotime()函數怎麼計算總天數。

本文的主題是:給定一個年月日,計算截止這一天總共有多少天。

這要怎麼計算?沒有思路是不是,我們換個方向,簡化一下,不就是求 x年1月1日——x年x月x日之間隔了多少天,也就是求兩個日期的時間差。那要怎麼求時間差呢?

我們需要先將兩個日期:x年1月1日和 x年x月x日轉換為時間戳

$startdate = strtotime("{$year}-01-01");
$enddate = strtotime("{$year}-{$month}-{$day}");

然後將兩個時間戳相減(結束時間-起始時間)

$diff_seconds = $enddate-$startdate;

這樣就會得到兩個日期的時間差,但此時還是以秒為單位計數的,不利於閱讀。

因為一天有24小時,1小時有60分鐘,1分鐘有60秒;換算一下24*60*60=86400,因此1天有86400秒。

將時間差$diff_seconds除以86400,在使用floor()向下捨去為最接近的整數

$time = floor(($diff_seconds)/86400);

此時取得到的是相差天數,不包含x月x日這一天,要再加1,才是截止某年某月某日的總天數。

我們來看看完整程式碼:

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>";
}

測試一下:計算截止2000-3-5的總天數(因為2000年是閏年,所以31 29 5=65)

GetDays(2000,3,5);

輸出結果為:

PHP函數運用之計算截止某年某月某日共有多少天

#OK,總天數是正確的!利用GetDays($year,$month,$day)函數,我們也可以計算一年的總天數

GetDays(2000,12,31);
GetDays(2021,12,31);

輸出結果為:

PHP函數運用之計算截止某年某月某日共有多少天

好了就說到這裡了,有其他想知道的,可以點這個哦。 → →php影片教學

#

以上是PHP函數運用之計算截止某年某月某日共有多少天的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn