我已经创建了以下代码来每分钟更新所有跨度的文本内容。有许多网页上,这些跨越所有需要每分钟更新的:使用jquery/javascript每分钟更新一次的时间说明
<span data-unix="1372263005" class="time_ago">4 minutes ago</span>
的代码如下:
window.setInterval(function(){
$(".time_ago").each(function(i, elem) {
var unix = $(elem).attr("data-unix")
var now = new Date().getTime();
now = parseInt(now)/1000;
var amount = 0;
var difference = 0;
difference = parseInt(now) - parseInt(unix);
if (difference < 60)
{
$(elem).html('a few seconds ago');
}
else if (difference < 120)
{
$(elem).html('a minute ago');
}
else if (difference < 3600)
{
amount = Math.floor(difference/60);
$(elem).html(amount + ' minutes ago');
}
else if (difference < 7200)
{
$(elem).html('an hour ago');
}
else if (difference < 86400)
{
amount = Math.floor(difference/3600);
$(elem).html(amount + ' hours ago');
}
else if (difference < 172800)
{
$(elem).html('a day ago');
}
else if (difference < 2635200)
{
amount = Math.floor(difference/86400);
$(elem).html(amount + ' days ago');
}
else if (difference < 5270400)
{
$(elem).html('a month ago');
}
else if (difference < 31622400)
{
amount = Math.floor(difference/2635200);
$(elem).html(amount + ' months ago');
}
else if (difference < 63244800)
{
$(elem).html('a year ago');
}
else
{
amount = Math.floor(difference/31622400);
$(elem).html(amount + ' years ago');
}
});
return false;
}, 60);
EDIT1)好了,现在我已经做了一些改变你的建议,但它将跨度文本更改为43351年。任何想法,为什么它这样做?
编辑2)好了,现在我有/ 1000,以便php unix时间与js getTime()匹配。唯一的问题是现在它将这个应用于所有的值。即)对于.time_ago的所有实例,我获得31分钟的时间 - 我如何才能将它一次只应用于一个实例,以便为每个实例获取不同的时间?
EDIT3)增加了正确的代码的情况下,任何人发现它是有用的..
JavaScript没有全局的'floor()'方法,但它确实有'Math.floor()'。 –
另外,你的'else'后面不应该有条件。 'else(difference> = 63244800)' –
另外,您使用'.text()'来设置HTML内容,这将导致显示完整的HTML语法而不是解析。 –