Статьи

Рассчитать время Twitter с Tweet, используя JavaScript

Этот скрипт вычисляет «время Твиттера» с момента создания твита, оно возвращается из API REST Twitter search.json в свойстве с именем «create_at» (пример: «Tue, 12 Jun 2012 06:24:59 +0000»). Эта функция может быть использована для отображения «времени с» в твиттере, скажем, виджета Twittter или чего-то подобного, а затем вы можете использовать setInterval, чтобы обновить время с момента твита (см., Например, ниже).

Функция CalculaySince ()

/**
  * Calculates the Twitter time since the tweet was created
  * @param datetime returned by Twitter API in created_at
  * @return time since in html
  */
function calculateSince(datetime)
{
    var tTime=new Date(datetime);
    var cTime=new Date();
    var sinceMin=Math.round((cTime-tTime)/60000);
    if(sinceMin==0)
    {
        var sinceSec=Math.round((cTime-tTime)/1000);
        if(sinceSec<10)
          var since='less than 10 seconds ago';
        else if(sinceSec<20)
          var since='less than 20 seconds ago';
        else
          var since='half a minute ago';
    }
    else if(sinceMin==1)
    {
        var sinceSec=Math.round((cTime-tTime)/1000);
        if(sinceSec==30)
          var since='half a minute ago';
        else if(sinceSec<60)
          var since='less than a minute ago';
        else
          var since='1 minute ago';
    }
    else if(sinceMin<45)
        var since=sinceMin+' minutes ago';
    else if(sinceMin>44&&sinceMin<60)
        var since='about 1 hour ago';
    else if(sinceMin<1440){
        var sinceHr=Math.round(sinceMin/60);
    if(sinceHr==1)
      var since='about 1 hour ago';
    else
      var since='about '+sinceHr+' hours ago';
    }
    else if(sinceMin>1439&&sinceMin<2880)
        var since='1 day ago';
    else
    {
        var sinceDay=Math.round(sinceMin/1440);
        var since=sinceDay+' days ago';
    }
    return since;
};

Обновить время с твиттера

Вот как вы можете использовать setInterval, чтобы обновить время с момента твита, используя функцию calcSince, описанную выше.

 //auto refresh interval to load more tweets
setInterval(function()
{
    console.log('updating time since...');
    var tweets = $('#tweets .tweet');
    $.each(tweets, function(i,v)
    {
        //update the time since for the tweet
        $(v).find('.tweet-time').html(calculateSince($(v).find('.tweet-user').attr('created_at'))).fadeIn();
    });
}, 30000);