一、取得今天日期
$today=date('Y-m-d H:i:s'); $todayDate=date('Y-m-d');
輸出結果:
2018-09-07 10:47:29
2018-09-07
二、現在時間小於結束時間
1.計算日期時間差
$endDay="2018-09-08 00:00:00"; echo "現在 ".$today.",結束 ".$endDay; echo "現在時間距離結束時間差 "; echo (strtotime($today) - strtotime($endDay))." 秒"; //計算相差之秒數 echo (strtotime($today) - strtotime($endDay))/ (60)." 分"; //計算相差之分鐘數 echo (strtotime($today) - strtotime($endDay))/ (60*60)." 小時"; //計算相差之小時數 echo floor((strtotime($today) - strtotime($endDay))/ (60*60*24))." 天"; //>=0時,則為日期已到或超過
輸出結果:
2.計算日期差
$endDate="2018-09-08"; echo "現在 ".$todayDate.",結束 ".$endDate; echo "現在時間距離結束時間差"; echo (strtotime($todayDate) - strtotime($endDate))." 秒"; echo (strtotime($todayDate) - strtotime($endDate))/ (60)." 分"; echo (strtotime($todayDate) - strtotime($endDate))/ (60*60)." 小時"; echo floor((strtotime($todayDate) - strtotime($endDate))/ (60*60*24))." 天";
輸出結果:
上面 1 跟 2 的計算中會發現,雖然天數都是一樣,但計算時分秒時所算的方式不同,
單純計算日期的會比較適合於案件結束時是要在凌晨,
有點需注意的是這兩種算法在去除86400時出來的結果是不同的
3.計算除86400後
echo floor((strtotime($today) - strtotime($endDay))/ (60*60*24)/86400)." 天"; echo floor((strtotime($todayDate) - strtotime($todayDate))/ (60*60*24)/86400)." 天";
輸出結果:
對於日期來說確實是差一天,但對於含有時間的日期來說,其實已經歸零了,
所以,如果是用第 1 種的算法來計算案件是否已結束,需注意其案件所設定的完整日期時間,
以免發生明明案件未結束,但程式判斷上卻已CLOSE。
三、現在時間大於結束時間
程式寫法同上就不再貼了,直接顯示結果$endDay="2018-09-05 00:00:00"; $endDate="2018-09-05";
1.計算日期時間差
2.計算日期差
3.計算除86400後
在計算過去時間會發現到除了時分秒不同外,天數都是一樣的,所以,如果要計算過去時間差,似乎是兩者皆可使用
沒有留言:
張貼留言