这是我的代码:

$logdate = Input::get('logdate');
            $enddate = Input::get('enddate');
            //Cast the dates to yyyy-dd-mm format for comparison
            $startdt  = date('Y-d-m',strtotime($logdate));
            $enddt = date('Y-d-m',strtotime($enddate));
            //Cast the dates into datetime objects
            $date1 = new DateTime($startdt);
            $date2 = new DateTime($enddt);
            //Calculate the difference between the 2 datetime objects
            $diff = $date1->diff($date2, true);
            //cast logdate into correct format for entry in the database
            $newlogdate = strtotime($logdate);
            $formatlogdate = date('Y-d-m',$newlogdate);

我用这个来计算间隔的天数:
 Log::info(intval($diff->days));

每当我在同一个月内编写包含12天或更少差异的代码时,这里的代码都可以正常工作,但只要超过12天,或者只要我尝试计算2个月之间的差异,就会出错,结果会给我16000+个
例如,根据这段代码,2015年4月26日和2015年5月2日之间的天数差是16557天,我不知道他们是怎么得到这个数字的,但大约是45年,结果总是16000+不管我选择的日期是在12天单月半径之外

最佳答案

当您执行-date('Y-d-m',strtotime($logdate));时,它将返回两个日期的-1970-01-01
/正在制造问题。
试试这个-

$log = '26/04/2015';
$end = '02/05/2015';

$date1 = new DateTime(str_replace('/', '-', $log));
$date2 = new DateTime(str_replace('/', '-', $end));
$diff = $date1->diff($date2, true);
echo $diff->days;

输出
6

09-29 20:25