php date_diff в часах

Как можно сделать код ниже конвертируемых дней в часах?

$timestart = date_create('02/11/2011' . $row->timestart); //$row->timestart returns time in 00:00:00 format $timestop = date_create('02/11/2011' . $row->timestop); //$row->timestop returns time in 00:00:00 format date_add($timestop, date_interval_create_from_date_string('2 days')); //add 2 days $date_diff = date_diff($timestart, $timestop); echo "Timespan: "; echo $date_diff->format('%h hours'); echo "<br />"; 

Как я могу получить hours:minutes:seconds истек? Я пытаюсь остаться с функцией date_diff .

Результат date_diff () является объектом класса DateInterval . Такой объект имеет очень полезное свойство – $days : общее количество дней между начальными и конечными датами. Кроме того, он сохраняет (как свои общедоступные свойства) разницу в часах, минутах и ​​секундах.

Итак, я полагаю, вам нужно просто извлечь значения этих свойств из переменной $ date_diff, а затем добавить 24*$days к числу часов. ) Все это можно объединить в простую функцию:

 function hms_date_diff(DateInterval $date_diff) { $total_days = $date_diff->days; $hours = $date_diff->h; if ($total_days !== FALSE) { $hours += 24 * $total_days; } $minutes = $date_diff->i; $seconds = $date_diff->s; return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); } 

Что касается формата DateDiff ::, то документ говорит …

Метод DateInterval :: format () не пересчитывает точки переноса в строках времени или в сегментах даты.

Объект DateInterval , возвращаемый date_diff хранит каждый период времени отдельно, секунды, минуты, часы, дни, месяцы и годы.

Поскольку разница составляет 2 дня, свойство часов равно 0, что и получается.