De Segundos a Horas, Minutos y Segundos

  • 31 de agosto de 2005
  • Valoración:
  • 3 Comentarios
  • Scripts 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.

Autor

Emmanuel García De Caro

Webmaster de Blasten.com

Comentarios

Elis JM

06/7/2006
SGL = Segundos A Convertir a HH:MM:SS

H=Horas
M=Minutos
S=Segundos

H = SGL / 3600;
\Divicion entera para obtener el numero de horas
M = SGL % 3600 /60;
\El Resto(SGL % 3600) entre 60 para convertirlo a minutos
S = SGL % 3600 %60;
\ El mismo principio se le saca el sobrante al resultado de (SGL%3600)

Rixio Danilo

28/9/2009
FELICITACIONES Y MUCHISIMAS GRACIAS
estaba enrredado con la funcion de tiempo para convertir de segundos a una marca de tiempo standard XX:XX:XX y tu funcion me ayudo bastante a entender el proceso, agradezco tu tiempo y el que hayas compartido este codigo con nosotros, mil gracias...

Saludos.

Amado

22/2/2011
Informacion
Como hacer el enlace con MYsql para trabajar con php

Compartir