> Manuales > Taller de PHP

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.

De Segundos a Horas, Minutos y Segundos con PHP

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

Manual