2012-06-14 3 views
0

Я ищу способ показать время, подобную выходному сигналу, основанному на временной отметке iso из db: 2008-07-17T09: 24: 17ZУчитывая временную метку, как показать timeago по дням/неделям/месяцам

Выход должен быть как:

  • используется сегодня
  • Используется во вторник
  • использовали в последний вторник
  • использовали больше, чем месяц назад

Что-то простое и более статичен, что вы получаете с timeago плагин JQuery: http://timeago.yarp.com/

Любые предложения? Спасибо

+1

В чем проблема с подключенным плагином timeago? Это слишком мелкозернистый? – acattle

+0

Что вы действительно хотите? –

+0

Есть много вопросов об этом в миллионах мест в Интернете. – ddlshack

ответ

0

Вы можете превратить метку времени в объект даты и сравнить ее с локальным (или некоторым другим) объектом даты. Затем классифицировать ответ, основанный на различии:

// Expects ISO8601 long format, no decimals of seconds 
function localDateFromUTC(s) { 

    var x = s.split(/[-\s:tz]/i); 
    var d = Date.UTC(x[0], x[1], x[2], x[3], x[4], x[5], 0); 
    return new Date(d); 
} 

function aboutTime(s) { 

    var r = Math.round; 
    var now = new Date(); 
    var then = localDateFromUTC(s); 
    var diff = r((now - then)/1000); // Convert to seconds 

    if (diff < 10) return 'a few seconds ago'; 
    if (diff < 50) return 'less than a minute ago'; 
    if (diff < 70) return 'about a minute ago'; 
    if (diff < 35000) return 'about ' + r(diff/60) + ' minutes ago'; 
    if (diff < 8.64e4) return 'about ' + r(diff/3600) + ' hours ago'; 
    if (diff < 6.048e5) return 'about ' + r(diff/8.64e4) + ' days ago'; 
    // and so on 
    return 'about ' + r(diff/6.048e5) + ' weeks ago'; 

} 

alert(aboutTime('2008-07-17T09:24:17Z')); // about 200 weeks ago 

Вы можете получить более умны относительно того, как число превращают в «о» строках (например, объект со свойствами, связанных с «о» время, а затем преобразовать номер к имени свойства).

Смежные вопросы