我正在制作一个计数“秒前”的 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 并将其记录在控制台中。
如何将“5 小时前”更改为“5 小时 37 分钟 10 秒前”?时差函数需要修改。