как получить длительность между start_date и end_date в формате hrs min sec в php?
$start_date=2012-03-23 11:58:14 and $end_date=2012-03-24 11:54:29
Используйте класс DateTime
:
$start_date = new DateTime('2012-03-23 11:58:14'); $end_date = new DateTime('2012-03-24 11:54:29'); $dd = date_diff($end_date, $start_date);
Чтобы получить часы, используйте $dd->h
, minutes – $dd->i
, seconds – $dd->s
.
echo "Hours = $dd->h, Minutes = $dd->i, Seconds = $dd->s";
я бы
$start_time = strtotime($start_date); $end_time = strtotime($end_date); $difference = $end_time - $start_time; echo date('H:i:s', $difference);
РЕДАКТИРОВАТЬ
Я допустил ошибку в предположении, что разница во времени будет меньше, чем в день, поэтому, если разница во времени больше, чем в день, вы увидите только часы: минутусы: секунды, что, вероятно, не то, что вы хотите (если это игнорировать это)
Так что я бы сейчас
$seconds = $difference % 60; //seconds $difference = floor($difference / 60); $min = $difference % 60; // min $difference = floor($difference / 60); $hours = $difference; //hours echo "$hours : $min : $seconds";
Извините за исправление
Эта функция поможет вам
function datediff($interval, $datefrom, $dateto, $using_timestamps = false) { /* $interval can be: yyyy - Number of full years q - Number of full quarters m - Number of full months y - Difference between day numbers (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".) d - Number of full days w - Number of full weekdays ww - Number of full weeks h - Number of full hours n - Number of full minutes s - Number of full seconds (default) */
См. Здесь: http://codepad.viper-7.com/FPuOks
$start_date="2012-03-22 11:58:14"; $end_date="2012-03-24 11:54:29"; $start_time = strtotime($start_date); $end_time = strtotime($end_date); $difference = $end_time - $start_time; echo sprintf("%02d%s%02d%s%02d", floor($difference/3600), ':', ($difference/60)%60, ':', $difference%60); // outputs 47:56:15