sábado, 17 de septiembre de 2011

Calcular tiempo transcurrido entre dos valores de hora (PHP, MySQL)

Hola:
Hoy voy a publicar cómo calcular el tiempo transcurrido entre dos valores de hora. Digamos por ejemplo que estuve realizando una acción desde las 11:59pm hasta las 4:01am y quiero saber el tiempo transcurrido.
Básicamente MySQL tiene una función para eso TIMEDIFF(expr1,expr2) que devuelve el resultado de la expr1-expr2 en un valor de tiempo (Importante: Ambas expresiones debes ser del mismo tipo).
Se puede utilizar asi:
SELECT TIMEDIFF('2011-12-31 04:01:00 ',   '2011-12-30 23:59:00 ');
Ahora, otra forma sencilla de hacerlo desde PHP, sin utilizar la función MySQL:

<?
function calcular_tiempo_trasnc($hora1,$hora2)
{
//divido la hora en horas, min y seg porque viene en formato hh:mm:ss
list( $h1, $m1, $s1 ) = split( '[:]', $hora1 );
list( $h2, $m2, $s2 ) = split( '[:]', $hora2 );
//resto los segundos
$st=$s2-$s1;
//si me da negativo resto el resultado a 60 y quito 1 a los minutos
if($st<0){
$st=60+$st;
$m2=$m2-1;
}
//resto los minutos
$mt=$m2-$m1;
//si me da negativo resto el resultado a 60 y quito 1 a las horas
if($mt<0){
$mt=60+$mt;
$h2=$h2-1;
}
//resto las horas
$ht=$h2-$h1;
//para que me de hh:mm:ss le agrego 0 alante del # si es menor que 10 sino me queda h:m:s para los menores que 10
$c=0;
if ($ht<10){
$ht=$c.$ht;
}
if ($mt<10){
$mt=$c.$mt;
}
if ($st<10){
$st=$c.$st;
}
//devuelvo el tiempo transcurrido en formato hh:mm:ss
return($ht.":".$mt.":".$st);
} //aquí termina la función
//imprimo el resultado de la función
echo calcular_tiempo_trasnc($hora1,$hora2);
?>

Bueno espero les sea de utilidad. Nos vemos luego para seguir hablando de programación.

No hay comentarios:

Publicar un comentario