Función PHP para convertir un número de segundos en su correspondiente valor en horas, minutos y segundos, con un formato adecuado para la lectura.
En esta página vamos a ver una sencilla función que nos permite hacer una conversión de un número de segundos en su equivalente en horas minutos y segundos, con un formato amistoso para la lectura de las personas.
Por ejemplo, si tengo una entrada de 28240 Segundos, la función nos devolverá la cadena: 7:50:40, que resulta mucho más sencilla de entender a la hora de visualizarse dentro de una página web.
El proceso es bastante sencillo. Veamos primero el código y luego ofreceremos una explicación:
Código Fuente de la función para convertir segundos en horas, minutos y segundos
Veamos primero el código de la función y cómo la invocamos para presentar una cadena correctamente formada con el tiempo convertido.
<?php
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" pasaría a ser "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)
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). Finalmente retornamos el resultado y aplicamos la función, con los segundos actuales del servidor para verificar que nos devuelve la hora exacta.
Emmanuel García De Caro
Webmaster de Blasten.com