У меня есть несколько сумм часов и нужно рассчитать среднее значение. Например, мое общее значение часа равно 2452: 43: 44 (H: m: s), а общее количество – 15. Я хотел бы получить среднее время в том же формате, что и часы: минуты: секунды. Как мы можем это сделать в PHP?
function average_time($total, $count, $rounding = 0) { $total = explode(":", strval($total)); if (count($total) !== 3) return false; $sum = $total[0]*60*60 + $total[1]*60 + $total[2]; $average = $sum/(float)$count; $hours = floor($average/3600); $minutes = floor(fmod($average,3600)/60); $seconds = number_format(fmod(fmod($average,3600),60),(int)$rounding); return $hours.":".$minutes.":".$seconds; } echo average_time("2452:43:44", 15); // prints "163:30:55" echo average_time("2452:43:44", 15, 2); // prints "163:30:54.93"
Близко к решению Антония , но с множеством hours
:
$time = array ( '2452:43:44', '452:43:44', '242:43:44', '252:43:44', '2:43:44' ); $seconds = 0; foreach($time as $hours) { $exp = explode(':', strval($hours)); $seconds += $exp[0]*60*60 + $exp[1]*60 + $exp[2]; } $average = $seconds/sizeof( $time ); echo floor($average/3600).':'.floor(($average%3600)/60).':'.($average%3600)%60;