我查看了这个论坛,发现了一些关于使用jQuery转换时间戳的简短帖子。 但我没有发现一次解决了我的问题。
我正在开发一个与Jquery Mobile结合使用的Web应用程序。 在这个webapp我显示一些Twitter提要:图像来自和消息。现在我也试图在那里得到约会。
我想从json那里了解日期,就像这样:
Tue, 05 Jun 2012 13:25:06 +0000
现在我想将此日期与当前日期进行比较,以计算过去的时间。 这是因为我想说:1秒前,2分钟前1小时前等。
有人可以告诉我如何将当前日期与推特日期进行比较吗?
答案 0 :(得分:2)
你可以像这样在javascript中比较时间戳。
var input_date = new Date('Tue, 05 Jun 2012 13:25:06 +0000').getTime();
var curr_date = new Date().getTime();
if(input_date > curr_date){
alert("greater");
}else{
alert('small');
}
以下是Demo
但根据您的要求,您希望显示时间,例如'1分钟前','1小时前','2天前',您可以使用 jquery timeago插件 而不是做javascrpt计算。请参阅this plugin,它将满足您的需求。
答案 1 :(得分:1)
var twitterDate = new Date("Tue, 05 Jun 2012 13:25:06 +0000").getTime(),
now = new Date().getTime();
if (twitterDate > now) {
alert('Future')
} else {
alert('Past');
}
<强> DEMO 强>
getTime方法返回的值是毫秒数 自1970年1月1日00:00:00 UTC。
了解 .getTime()
为了获得日期差异,您可以遵循以下方法:
function getDateDiff(twitterDate, interval) { // interval means unit,
// in which you want the result
var second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24,
week = day * 7;
date1 = new Date(twitterDate).getTime();
date2 = new Date().getTime();
var timediff = date2 - date1;
if (isNaN(timediff)) return NaN;
switch (interval) {
case "years":
return date2.getFullYear() - date1.getFullYear() + ' years ago.';
case "months":
return ((date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth())) + ' months ago.';
case "weeks":
return Math.floor(timediff / week) + ' weeks ago.';
case "days":
return Math.floor(timediff / day) + ' days ago.';
case "hours":
return Math.floor(timediff / hour) + ' hours ago.';
case "minutes":
return Math.floor(timediff / minute) + ' minutes ago.';
case "seconds":
return Math.floor(timediff / second) + ' seconds ago.';
default:
return undefined;
}
}
使用:
getDateDiff("Tue, 05 Jun 2012 13:25:06 +0000", "seconds");