Función "hace n días n horas n minutos" en PHP

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.

Compartir/Guardar artículo

Comentarios

  1. avatar Afu 2008-03-25 13:18:36 4 Muy buena informacion gracias por tu colaboracion
  2. avatar Jesus 2007-10-20 22:12:41 3 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...=)

  3. avatar Alejandro Torres 2007-10-11 18:05:48 2 Muy buena informacion, me servira para mis proyectos, por cierto, el vista previa de sus comentarios me alenta terriblemente la velocidad de escritura :S
  4. avatar Eddwin paz 2007-10-11 13:15:31 1 Gracias, por contestar mi correo electronico lo de las url lo pude conseguir <img style="border: 0px none " src="../img/caritas/risueno.gif" alt="risas" title="Risas" width="18" height="18" /> se le agradece

Dejar un comentario


Navegación

Categorias

Archivos