Hola
Trata de convertir las horas a mktime() osea a segundos desde el UNIX y luego restalos, una vez hecho eso convirtelos dividiendo y luego imprimelos. Obviamente primero separa con explode las horas de los minutos, mas o menos asi:
Código php:
Ver original/*Suponiendo que tu variable de llamada sea horaLlamada*/
list($horaLlamada_hrs, $horaLlamada_min) = explode(":", $horaLlamada);
/*Suponiendo que tu variable de llegada sea horaLlegada*/
list($horaLlegada_hrs, $horaLlegada_min) = explode(":", $horaLlegada);
/*Convertimos a mktime*/
$primer_valor = mktime($horaLlamada_hrs, $horaLlamada_min, 0, 0, 0, 0); $segundo_valor = mktime($horaLlegada_hrs, $horaLlegada_min, 0, 0, 0, 0);
/*Restamos hora de llegada con hora de llamada*/
$restar = $segundo_valor - $primer_valor;
/*Convertimos de nuevo a horas y minutos*/
//Horas
$res_hrs = round($restar / (60*60));
/*Para que no nos regrese un valor excesivo y, obviamente irreal de minutos le restamos primero los minutos redondeados de las horas a los segundos resultantes de la resta*/
$calcular_min = $restar - ($res_hrs * (60*60));
$res_min = round($calcular_min / 60);
/*Convertimos a una string completa de tiempo HH:MM*/
$resultado = $res_hrs.":".$res_min;
/*Hacemos echo con el resultado*/
echo $resultado;
Espero te sirva, saludos!