日期格式化函数给出了一个负数

时间:2014-08-29 23:51:02

标签: javascript twitter

我有这段代码

function dateFormatter(date) {

var seconds = Math.floor((new Date() - date) / 1000);
var interval = Math.floor(seconds / 31536000);

if (interval > 1) {
    return interval + " Years Ago ";
}
interval = Math.floor(seconds / 2592000);
if (interval > 1) {
    return interval + " Months Ago ";
}
interval = Math.floor(seconds / 86400);
if (interval > 1) {
    return interval + " Days Ago ";
}
interval = Math.floor(seconds / 3600);
if (interval > 1) {
    return interval + " Hrs ago ";
}
interval = Math.floor(seconds / 60);
if (interval > 1) {
    return interval + " mins ago ";
}
return Math.floor(seconds) + " seconds ago";

}

它工作正常但有些时候它给了我一个负数,我从twitter获取最后的推文并想要自定义日期。 现在我有一条21:08:49 GMT-0400 (EDT)日期的推文,但我得到的是-4733 SECONDS AGO

知道这里发生了什么吗? 任何帮助将不胜感激。

更新的代码:

var d = new Date(g[b].getAttribute("datetime").replace(/-/g, "/").replace("T", "  ").split("+")[0]),

1 个答案:

答案 0 :(得分:0)

我的第一个猜测是你作为参数传递的日期比当前日期“更新”。这是有道理的,因为你的间隔总是小于1,你会跳过if子句总是在几秒钟内返回答案。

也许您正在使用不同的时区?尝试将两个日期记录到控制台console.log(...),您将知道是否需要进一步查看。