datetime — php date-> diff () возвращает бессмысленные суммы

Это мой код:

$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+ как результат

например, согласно этому коду разница в днях между 26/04/2015 и 05/05/2015 составляет 16557 дней, я не знаю, как они добираются до этого числа, но это около 45 лет, а результат всегда 16000+ независимо от того, какие даты я выбираю, учитывая, что они находятся за пределами 12-дневного радиуса одного месяца

3

Решение

Когда вы делаете — 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
2

Другие решения

Правильный способ сделать это:

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

$date1 = \DateTime::createFromFormat('d/m/Y', $log);
$date2 = \DateTime::createFromFormat('d/m/Y', $end);
$diff = $date1->diff($date2, true);
echo $diff->days;

http://3v4l.org/EhGaA

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;
0
По вопросам рекламы [email protected]