php date-> diff()返回无意义的金额

时间:2015-05-19 10:26:08

标签: php datetime laravel datediff

这是我的代码:

$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个月之间的差异haywire并因此给了我16000+

例如根据此代码,2015年4月26日至2015年5月2日之间的天数差异为16557天,我不知道他们如何得到这个数字,但它是45左右年,并且结果总是16000 +无论我选择哪个日期,因为它们在12天单月半径之外

3 个答案:

答案 0 :(得分:2)

当你这样做时 - 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

答案 1 :(得分:0)

你这样做的正确方法是: -

namespace=
    host: 'facebook.com'
    user: 'facebook.com/user/42342342'

http://3v4l.org/EhGaA

答案 2 :(得分:0)

或尝试一下:

$datetime1 = strtotime("2011-10-10 10:00:00");
$datetime2 = strtotime("2011-10-10 10:45:00");
$interval  = abs($datetime2 - $datetime1);
$minutes   = round($interval / 60);
echo 'Diff. in minutes is: '.$minutes;