Нечеткое время в 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 - это время в формате даты в формате UTC для JavaScript. relTime - это значение "секунды назад"; формат. Интервал перебирает кучу элементов меток времени и выбирает правильный для каждой метки времени. Затем он добавляет секунду ко времени и преобразует его обратно в «нечеткое время». (секунд назад), заменяет html новым временем и регистрирует его в консоли.
How do I change "5 hours ago" to "5 hours, 37 mintues, 10 seconds ago"? The time difference function needs to be modified.