1

我查看了这个论坛,发现了一些关于使用 jQuery 转换时间戳的类似帖子。但是我还没有找到解决我的问题的方法。

我正在与 Jquery Mobile 结合使用 web 应用程序。在这个 web 应用程序中,我显示了一些 twitter 提要:图像来自和消息。现在我也试图在那里获取日期。

Wehn 我正在从 json 中检索日期,如下所示:

Tue, 05 Jun 2012 13:25:06 +0000

现在我想将此日期与当前日期进行比较以计算过去的时间。这是因为我想说:1 秒前、2 分钟前、1 小时前等。

有人能告诉我如何将当前日期与 twitter 日期进行比较吗?

4

2 回答 2

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');
}

这是演示

但是根据您的要求,您希望显示时间,例如“1 分钟前”、“1 小时前”、“2 天前”,您可以使用jquery timeago 插件而不是进行 javascrpt 计算。请看这个插件,它会满足你的需求。

于 2012-06-05T16:48:48.003 回答
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');
}

演示

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");
于 2012-06-05T16:33:12.900 回答