Función “hace n días n horas n minutos” en PHP

7
3220

Seguramente han visto en algunos sitios o blogs, en los post o comentarios la fecha en formato: escrito por tal_usuario hace 10 días 9 horas 7 minutos. Yo siempre me preguntaba como se hace, así que investigando (googleando) no di, así que se me ocurrió hacerlo por mi cuenta ¿Cómo? lo explicare.

Lo que necesitas es trabaja con una tabla de datos (en MySQL por ejemplo) y tener un campo de tipo datetime. Cuando realices una consulta de esta tabla hazlo de la siguiente forma:

SELECT *, UNIX_TIMESTAMP(campo_fecha) AS fecha_unix FROM mitabla

¿Qué hemos hecho? La consulta SELECT devolverá los datos con un campo adicional llamado fecha_unix, por eso usamos función la UNIX_TIMESTAMP que devuelve la fecha unix (segundos desde 1970-01-01 00:00:00 GMT). 

Ahora veamos la función PHP, la llamaremos hace() que tendrá como parámetro de entrada la fecha en formato Unix:

 function hace($fecha_unix){
//obtener la hora en formato unix
$ahora=time();

//obtener la diferencia de segundos
$segundos=$ahora-$fecha_unix;

//dias es la division de n segs entre 86400 segundos que representa un dia;
$dias=floor($segundos/86400);

//mod_hora es el sobrante, en horas, de la division de días;
$mod_hora=$segundos%86400;

//hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
$horas=floor($mod_hora/3600);

//mod_minuto es el sobrante, en minutos, de la division de horas;
$mod_minuto=$mod_hora%3600;

//minuto es la division entre el sobrante y 60 segundos que representa un minuto;
$minutos=floor($mod_minuto/60);

if($horas<=0){
echo $minutos.' minutos';
}elseif($dias<=0){
echo $horas.' horas '.$minutos.' minutos';
}else{
echo $dias.' dias '.$horas.' horas '.$minutos.' minutos';
}
}

Seguramente hay otras formas de hacer esto, pero esta es mi aportación. Espero que les sirva.

7 COMENTARIOS

  1. exactamente como llamo a mi funcion disculpen mi ignorancia
    pq lo hago asi :

    hago eso y me imprime esto:
    13807 dias 2 horas 36 minutos => eso no entiendo pq coloco una fecha anterior y me deberia salir los dias que pasaron verdad
    asi y si tambien llegarias hacer un funcion sino fuera mucha molestia para tambien saber cuantos dias minutos faltan a una dada
    gracias…=)

  2. Si definitivamente!!! Ahora por el trabajo seglar no tengo mucho tiempo (por no decir nada de tiempo).

    Haber propongo a quien quiera ayudar a mejorar la función ó mostrar alguna alternativa. Pueden dejarlo en los comentarios ó enviarme un correo.

    Saludos queridos lectores!!!

  3. exelente amigo esta seria la forma de como mostrarias

    echo hace();

    dentro del parenticis pondrias la varible q muestre los datos de la fecha en este formato 1279211878 para que te salga este formato tienes poner esto al guardar la fecha time()

    saludos si tienes dudas escribeme al msn webmaster@portuhermana.com salu2.

Comments are closed.