[英]PHP - Calculate days between two dates - not working in March and April 2013
我的PHP函數有問題。 一直到現在,當我需要計算日期2013-03-28和2013-04-01之間的天數(或更准確地說,是夜晚)時。 結果應為4(03/28至03 / 29、03 / 29至03 / 30、03 / 30至03/31和03/31至04/01),並且我的函數返回3。(當我使用2012- 03-28和2012-04-01,而不是2013年的相同日期,它可以正常運行)。 你能幫我嗎?
function termLength($dateFrom, $dateTo) {
$dateFrom = (($dateFrom instanceof DateTime) ? $dateFrom : new DateTime($dateFrom));
$dateTo = (($dateTo instanceof DateTime) ? $dateTo : new DateTime($dateTo));
$difference = $dateTo->format('U') - $dateFrom->format('U');
return floor($difference / (60 * 60 * 24));
}
echo termLength('2013-03-28', '2013-04-01');
// output: 3
// it should be: 4
你能幫我嗎? 謝謝,J。
如果仍然使用DateTime
,請使用DateInterval
機制:
$diff = $dateFrom->diff($dateTo);
echo $diff->format('%a');
嘗試這個:
$start = strtotime('2013-03-28');
$end = strtotime('2013-04-01');
$days_between = ceil(abs($end - $start) / 86400);
我建議您將其轉換為時間戳,計算差異,然后將其轉換回。
round(($end_date - $start_date), 0);
功能主體:
function dateDifference($startDate = '', $endDate = '') {
$startDateConverted = strtotime($startDate);
$endDateConverted = strtotime($endDate);
$substractedDate = $endDateConverted - $startDateConverted;
$substractedDate = max(intval($substractedDate), 0);
$dateDifference = round(abs($substractedDate) / 86400);
return $dateDifference;
}
致電:
echo dateDifference('2013-03-28', '2013-04-01');
輸出:
4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.