entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Trabajo con Tiempo en PHP y MYSQL

Hola, Quiero hacer un Timeline de la siguiente forma: tengo una tabla en mi base de datos donde quiero guardar el momento exacto en que se insertó una noticia Tabla: timeline(momento_publicada timestamp,titulo_noticia varchar,id int autoincrement...) entonces cuando se cargue el homr de mi página quiero mostrar algo como Titulo_Noticia > motmento_actual-momento_publicada

<h1>Hoy un nuevo Hola Mundo</h1><h3>15 min</h3> 
<h1>Una Noticia Vieja</h1><h3> + 1hora</h3> 

donde tendré las últimas 10 noticias insertadas.
Saludos Dairon

1 Respuesta

2votos

white Puntos75880

Aca te dejo una funcion:

function ago($timestamp, $suffix = '')
{
    $times = [
        'year' => 31536000,
        'month' => 2678400,
        'day' => 86400,
        'hour' => 3600,
        'minute' => 60,
        'second' => 1
    ];

    $time_phrases = [
        'year' => ['1 año', '%d año'],
        'month' => ['1 mes', '%d meses'],
        'day' => ['1 dia', '%d dias'],
        'hour' => ['1 hora', '%d horas'],
        'minute' => ['1 minuto', '%d minutos'],
        'second' => ['un momento'],
        'undefined' => 'mucho tiempo'
    ];

    $since_time = time() - $timestamp;

    $output = false;

    foreach($times as $type => $seconds)
    {
        if ($since_time >= $seconds)
        {

            $calc = floor($since_time / $seconds);

            $plural = ($calc == 1 || $type == 'second');

            if ($calc == 1 || $calc > 1)
                $output = sprintf($time_phrases[$type][($plural ? 0 : 1)], $calc);

            else
                $output = $time_phrases['undefined'];

            break;
        }
    }

    return $suffix . ' ' . (!$output ? $time_phrases['second'][0] : $output);
}

donde $timestamp es el tiempo de tu notificia y $suffix es la cadena que va antes. puedes modificar el arreglo que defini como $time_phrases en la funcion a tu gusto.

echo ago(1422846559, 'hace');

te devuelve: hace 24 minutos

tambien existe una libreria para jquery que hace lo mismo en el lado del cliente http://mattbradley.github.io/livestampjs/ que trabaja con moment.js ( http://momentjs.com/ )

0voto

dairon comentado

Gracias ahora mismo lo acabo de montar y me funcionó bien, solo un pequeño detalle los array los tienes declarados parece para python lo adapte a php y todo corrió bien.
Saludos Dairon

0voto

white comentado

Sucede que en php >= 5.4 existe la posibilidad de usar corchetes para definir arrays.

saludos!

0voto

dairon comentado

Es que siempre estoy trabajando con tecnologia viejas, mi servidor está en php 5.3 ;(
Gracias White, Saludos desde Cuba

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta