Buenas, hoy ponemos una función que nos mostrará, pasando un
timestamp unix
(lo que nos devuelve la función
time()
) cuantos segundos, minutos, dias, meses,.. al estilo Facebook.
Seguramente habrán otras formas de implementarla, mejorarla etc, así que si las tenéis compartidlas aquí y la mejoramos entre todos!
<?php
function time_passed($timestamp)
{
$diff = time() - (int)$timestamp;
if($diff < 20) { $return = 'Ahora mismo'; }
else if($diff >= 20 AND $diff < 60) { $return = sprintf('hace %s segundos.' , $diff); }
else if($diff >= 60 AND $diff < 120) { $return = sprintf('hace %s minuto.' , floor($diff/60)); }
else if($diff >= 120 AND $diff < 3600) { $return = sprintf('hace %s minutos.' , floor($diff/60)); }
else if($diff >= 3600 AND $diff < 7200) { $return = sprintf('hace %s hora.' , floor($diff/3600)); }
else if($diff >= 7200 AND $diff < 86400) { $return = sprintf('hace %s horas.' , floor($diff/3600)); }
else if($diff >= 86400 AND $diff < 172800) { $return = sprintf('hace %s dia.' , floor($diff/86400)); }
else if($diff >= 172800 AND $diff < 604800) { $return = sprintf('hace %s dias.' , floor($diff/86400)); }
else if($diff >= 604800 AND $diff < 1209600) { $return = sprintf('hace %s semana.' , floor($diff/604800)); }
else if($diff >= 1209600 AND $diff < 2629744) { $return = sprintf('hace %s semanas.' , floor($diff/604800)); }
else if($diff >= 2629744 AND $diff < 5259488) { $return = sprintf('hace %s mes.' , floor($diff/2629744)); }
else if($diff >= 5259488 AND $diff < 31556926) { $return = sprintf('hace %s meses.' , floor($diff/2629744)); }
else if($diff >= 31556926 AND $diff < 63113852) { $return = sprintf('hace %s año.' , floor($diff/31556926)); }
else if($diff >= 63113852) { $return = sprintf('hace %s años.' , floor($diff/31556926)); }
else { $return = date('H:i:s d/m/Y', $timestamp); }
return $return;
}
?>
Tomar en consideración que lo que vemos como "Ahora mismo" es desde el tiempo actual a 20 segundos atras.
Cómo funciona es muy simple, solo tendremos que pasar el valor de tiempo y mostrarlo con un
echo
.
Por ejemplo:
echo time_passed(time()); // Nos mostrará siempre "Ahora mismo"
echo time_passed(time()-3601); // Nos mostrará siempre "Hace 1 hora."
Y asi sucesivamente hasta hace X años, pasando por, segundos, minutos, horas, dias, semanas, meses, años.
Bueno espero sea de utilidad para alguien!!
Un saludo!!!