viernes, 4 de abril de 2014

De Segundos a Horas, Minutos y Segundos en PHP





¿Como llevar de segundos a Horas ( si las hay ), Minutos ( si los hay ) y Segundos.

Por ejemplo si tengo 28240 Segundos, como hacer que imprima: 7:50:40 Horas

El proceso es sin duda sencillo, veamos el código y luego la explicación:

Código Fuente:

<?

function segundos_tiempo($segundos){

$minutos=$segundos/60;

$horas=floor($minutos/60);

$minutos2=$minutos%60;

$segundos_2=$segundos%60%60%60;

if($minutos2<10)$minutos2=’0′.$minutos2;

if($segundos_2<10)$segundos_2=’0′.$segundos_2;

if($segundos<60){ /* segundos */

$resultado= round($segundos).’ Segundos’;

}elseif($segundos>60 && $segundos<3600){/* minutos */

$resultado= $minutos2.’:’.$segundos_2.’ Minutos’;

}else{/* horas */

$resultado= $horas.’:’.$minutos2.’:’.$segundos_2.’ Horas’;

}

return $resultado;

}

$segundos=date(‘h’)*60*60+(date(‘i’)*60)+date(‘s’);

echo ‘Segundos: ‘.$segundos.’ Resultado: ‘.segundos_tiempo($segundos);

?>

Explicando:

Definimos una función con el nombre de segundos_tiempo(ARG1), donde el ARG1 es el valor que indicamos ( segundos) cuando llamamos la función.

Realizaremos una serie de operaciones aritméticas, para luego condicionar el resultado.

$Minutos, tal como se ve; sera igual a la división entre $segundo y 60.

Ejemplo: 120 segundos / 60 es igual a 2 minutos.

$horas es igual a la división de $minutos entre 60 , y lo redondeamos hacia abajo con la función matemática floor()

$minutos2 será igual al residuo (resto) devuelto por la división entre $minutos y 60.

Y $segundos_2 el residuo de la división entre $segundos, 60, 60, 60 sucesivamente.

Que no son más que los datos acumulados en los procesos anteriores.

Luego iniciamos una condición para verificar si el número es menor a 10 y colocarle un 0 (cero) al comienzo: Por ejemplo 9 => 09 , el proceso lo repetimos con los segundos y minutos, con la horas seria innecesario.

Creamos otra condición para indicar si se ha definido Horas, minutos ó segundos y retornar el formato y estilo correcto.

Si $segundos es menor que 60 (entonces solo hay segundos)

if($segundos<60)

De lo contrario si $segundos es menor que 60 y es menor que 3600 (Se han definido minutos y segundos)

elseif($segundos>60 && $segundos<3600)

De lo contrario a todas estas (se ha definido horas, minutos y segundos)

else

Finalmente retornamos el resultado

return $resultado;

Y aplicamos la función, con los segundos actuales del servidor para verificar que nos devuelve la hora exacta.



Fuente:enlace

No hay comentarios:

Publicar un comentario

Entradas populares