日期格式化程序函数给我一个负数

Date formatter function gives me a negative number

本文关键字:一个 程序 格式化 函数 日期      更新时间:2023-09-26

我有这段代码

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";

}

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

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

更新代码:

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

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

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

相关文章: