Wilfredor Blog

Marzo 6, 2008

Convertir Segundos a Dias,Horas,Minutos y Segundos

Archivado en: MySQL, PHP — Etiquetas:, , , , , , , , , , , , , , — wilfredor @ 3:56 pm

Hace algunos dias haciendo un sistemita de publicación de noticias se me ocurrió agregarle una característica interesante para que dijera algo así parecido: Esta noticia fue publicada hace 5 días 4 horas 3 minutos 4 segundos.

Bueno pensando en ello nació el siguiente código, que lo consigue, pasandole como parámetro únicamente el numero de segundos transcurridos entre la fecha de publicación de la noticia y la fecha actual, acá pego un ejemplo de como obtener eso en SQL:

SQL:


SELECT (UNIX_TIMESTAMP( NOW( ) )
- UNIX_TIMESTAMP( fecha )) AS input_seconds FROM noticias

Y, por supuesto, la función que lo calcula a continuación:


function human_time($input_seconds) {
    $days = "";$hours = "";$minutes = "";$seconds = "";
    $days=floor($input_seconds / 86400);
    $remainder=floor($input_seconds % 86400);
    $hours=floor($remainder / 3600);
    $remainder=floor($remainder % 3600);
    $minutes=floor($remainder / 60);
    $seconds=floor($remainder % 60);

    if ($days>0) $days = "$days dias ";
    if ($hours>0) $hours = "$hours hrs ";
    if ($minutes>0) $minutes = "$minutes min ";
    if ($seconds>0) $seconds = "$seconds seg ";
return $days.$hours.$minutes.$seconds;
}

2 comentarios »

  1. Muy útil la función justamente me preguntaba como hacer esto mismo.

    Gracias

    Comentario por x_Silver — Abril 29, 2008 @ 2:55 pm

  2. Le hice una leve modificación para que no aparezcan los números cuando el tiempo no llega a dias, horas, etc.

    function relativeTime($input_seconds) {
    $days = “”;
    $hours = “”;
    $minutes = “”;
    $seconds = “”;
    $days=floor($input_seconds / 86400);
    $remainder=floor($input_seconds % 86400);
    $hours=floor($remainder / 3600);
    $remainder=floor($remainder % 3600);
    $minutes=floor($remainder / 60);
    $seconds=floor($remainder % 60);
    if ($days>1)
    $days = “$days dias “;
    else
    $days = “”;
    if ($hours>1)
    $hours = “$hours horas “;
    else
    $hours = “”;
    if ($minutes>1)
    $minutes = “$minutes minutos “;
    else
    $minutes =”";
    if ($seconds>1)
    $seconds = “$seconds segundos “;
    else
    $seconds =”";
    return $days.$hours.$minutes.$seconds;
    }

    Comentario por x_Silver — Abril 29, 2008 @ 3:35 pm

Redifusión RSS de los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Blog de WordPress.com.