我的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。
答案 0 :(得分:5)
如果您仍在使用DateTime
,请使用DateInterval
机制:
$diff = $dateFrom->diff($dateTo);
echo $diff->format('%a');
答案 1 :(得分:1)
试试这个:
$start = strtotime('2013-03-28');
$end = strtotime('2013-04-01');
$days_between = ceil(abs($end - $start) / 86400);
答案 2 :(得分:0)
我建议您将其转换为时间戳,计算差异然后将其转换回来。
答案 3 :(得分:0)
round(($end_date - $start_date), 0);
答案 4 :(得分: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