Función “hace n días n horas n minutos” en PHP
23 jun
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. Encontré navegando por internet la forma de implementar esta función.
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’;
}
}


No comments yet