Нечеткое время Javascript (, например, «10 минут назад» ), то есть в точных секундах

Я делаю счетчик javascript, который считает «секунды назад». У меня есть время в объекте времени JS, и я нашел здесь фрагмент функции «разница во времени» при переполнении стека, но он отображает «2 часа назад». Как я могу заставить его отображать «5 часов, 10 минут и 37 секунд назад».

Вот с чем я работаю:

Эта функция преобразует текущее время и отметку времени чего-либо в «20 секунд назад» вместо загадочной даты :

function timeDifference(current, previous) {
    var msPerMinute = 60 * 1000;
    var msPerHour = msPerMinute * 60;
    var msPerDay = msPerHour * 24;
    var msPerMonth = msPerDay * 30;
    var msPerYear = msPerDay * 365;

    var elapsed = current - previous;

    if (elapsed < msPerMinute) {
         return Math.round(elapsed/1000) + ' seconds ago';   
    } else if (elapsed < msPerHour) {
         return Math.round(elapsed/msPerMinute) + ' minutes ago';   
    } else if (elapsed < msPerDay ) {
         return Math.round(elapsed/msPerHour ) + ' hours ago';   
    } else if (elapsed < msPerMonth) {
         return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago';   
    } else if (elapsed < msPerYear) {
         return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago';   
    } else {
         return 'approximately ' + Math.round(elapsed/msPerYear ) + ' years ago';   
    }
}

. И вот что я использую, чтобы «подсчитывать» время каждую секунду. Я бы хотел, чтобы он говорил «5 часов, 3 минуты, 10 секунд назад», а затем через 1 секунду «5 часов, 3 минуты, 11 секунд назад»

var newTime = new Date(data.popular[i].timestamp*1000)
var relTime = timeDifference(new Date(),newTime)

setInterval(function(){
    var theTimeEl = $('.timestamp-large').filter(function(){
        return $(this).html() == relTime
    });
    newTime.setSeconds(newTime.getSeconds() + 1);
    var relTime = timeDifference(new Date(), newTime);
    $(theTimeEl).html(relTime);
    console.log(relTime)
}, 1000)

Переменная newTime — это время в формате даты javascript UTC. relTime - это формат "секунды назад". Интервал перебирает кучу элементов метки времени и выбирает правильный элемент для каждой метки времени. Затем он добавляет ко времени секунду, преобразует его обратно в «нечеткое время» (секунд назад ), заменяет html новым временем и регистрирует его в консоли.

Как изменить «5 часов назад» на «5 часов 37 минут 10 секунд назад»? Функцию разницы во времени необходимо изменить.

9
задан ErikE 14 July 2012 в 02:53
поделиться