Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2010, 18:13
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Problema restar dos tiempos

Buenas,

Estoy haciendo una función similar a la que utiliza facebook que te dice cuanto tiempo ha pasado desde que se puso un comentario, por ej.

Y tengo problemas cuando las horas son del estilo
hora comentario = 22:00
hora actual = 1:30

La diferencia debería ser de 3 horas y 30 min. Sin embargo me aparece
Hace -1230 minutos xD

Código PHP:
Ver original
  1. function calcular_tiempo_trasnc($hora1,$hora2){
  2. // HORA1 = HORA ACTUAL
  3. // HORA2 = OTRA HORA
  4.  
  5.     $separar[1]=explode(':',$hora1);
  6.     $separar[2]=explode(':',$hora2);
  7.  
  8. // Transformo las hora 0:00 en las 24:00
  9. if ($separar[1][0]==0) $separar[1][0]=24;
  10. if ($separar[2][0]==0) $separar[2][0]=24;
  11.  
  12. $total_minutos_trasncurridos[1] = ($separar[1][0]*60)+$separar[1][1];
  13. $total_minutos_trasncurridos[2] = ($separar[2][0]*60)+$separar[2][1];
  14. $total_minutos_trasncurridos = $total_minutos_trasncurridos[1]-$total_minutos_trasncurridos[2];
  15.  
  16. if(($total_minutos_trasncurridos<=59) and ($total_minutos_trasncurridos>=0))
  17.     return('Hace '.$total_minutos_trasncurridos.' minutos');
  18. elseif ($total_minutos_trasncurridos<0)
  19.     return('Hace '.$total_minutos_trasncurridos.' minutos');
  20.  
  21. elseif($total_minutos_trasncurridos>59){
  22.  
  23.     $HORA_TRANSCURRIDA = round($total_minutos_trasncurridos/60);
  24.    
  25.     if($HORA_TRANSCURRIDA==1) $texthora='hora';
  26.     else $texthora='horas';
  27.    
  28.     $MINUITOS_TRANSCURRIDOS = $total_minutos_trasncurridos%60;
  29.    
  30.     return ('Hace '.$HORA_TRANSCURRIDA." $texthora y ".$MINUITOS_TRANSCURRIDOS.' minutos');
  31. }
  32.  
  33. }
  34. //llamamos la función e imprimimos
  35. echo "<br/>";
  36. echo date('H:i');
  37. echo "<br/>";
  38. echo calcular_tiempo_trasnc('22:29','22:20'); // Hace 9 minutos
  39. echo "<br/>";
  40. echo calcular_tiempo_trasnc('23:34','22:20'); // Hace 1 hora y 14 minutos
  41. echo "<br/>";
  42. echo calcular_tiempo_trasnc('1:30','22:00'); // Hace -1230 minutos
  43. echo "<br/>";

¿Qué modificaríais?

Muchas gracias de antemano!