Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/12/2008, 23:07
gilitos92
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 15 años, 11 meses
Puntos: 4
Respuesta: Resta de dos horas automatico

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
  1. /*Suponiendo que tu variable de llamada sea horaLlamada*/
  2. list($horaLlamada_hrs, $horaLlamada_min) = explode(":", $horaLlamada);
  3.  
  4. /*Suponiendo que tu variable de llegada sea horaLlegada*/
  5. list($horaLlegada_hrs, $horaLlegada_min) = explode(":", $horaLlegada);
  6.  
  7. /*Convertimos a mktime*/
  8. $primer_valor = mktime($horaLlamada_hrs, $horaLlamada_min, 0, 0, 0, 0);
  9. $segundo_valor = mktime($horaLlegada_hrs, $horaLlegada_min, 0, 0, 0, 0);
  10.  
  11. /*Restamos hora de llegada con hora de llamada*/
  12. $restar = $segundo_valor - $primer_valor;
  13.  
  14. /*Convertimos de nuevo a horas y minutos*/
  15. //Horas
  16. $res_hrs = round($restar / (60*60));
  17.  
  18. /*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*/
  19. $calcular_min = $restar - ($res_hrs * (60*60));
  20. $res_min = round($calcular_min / 60);
  21.  
  22. /*Convertimos a una string completa de tiempo HH:MM*/
  23. $resultado = $res_hrs.":".$res_min;
  24.  
  25. /*Hacemos echo con el resultado*/
  26. echo $resultado;
Espero te sirva, saludos!