2014-08-29 19 views
0

我有這樣一段代碼日期格式化功能給了我一個負數

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]), 

回答

0

我的第一個猜想是,你傳遞作爲參數的日期比當前日期「更新」。這是有道理的,因爲你的間隔總是小於1,你會跳過if子句總是在幾秒鐘內返回答案。

也許你正在使用不同的時區?嘗試將這兩個日期記錄到控制檯console.log(...),您將知道是否需要進一步觀察。

+0

你正確的事情發生在未來的時候:DI只是添加了新的代碼看看我認爲這將是一個問題的來源 – user3067592 2014-08-30 00:08:58

+0

很高興我可以幫助:)我想這只是一個時區問題沒有正確轉換 – 2014-08-30 00:12:07

+0

我可以做任何事情來阻止它嗎?你有沒有看到我更新的代碼? – user3067592 2014-08-30 00:18:32