2011-12-21 193 views
0

我已經編寫了一些JavaScript來計算兩個日期之間的差異,然後將其等同於特定的值 - 例如'Seconds ago','x days前」 .....計算兩個日期之間傳遞的時間量

我創建了一個小提琴這裏展示我做了什麼:http://jsfiddle.net/meAEe/3/

但是結果總是等於‘0天前’。

任何人都可以幫我找出原因嗎?

+3

請張貼的問題在您的代碼。 –

回答

2

您需要每個if語句之間的else

現在它將進入每個if聲明後的第一個匹配。如果時間少於一個小時,它也少於兩小時,少於一天,少於兩天,少於一年。每個人都會替換上一個,所以你只能看到最後一個。

0

爲什麼不使用插件呢?它們中有很多用JavaScript編寫。這是用jQuery編寫的一個甜蜜的文章。

http://timeago.yarp.com/

+0

「在jQuery中」 - 請注意,jQuery不是一種編程語言。 – pimvdb

+0

我會編輯以反映您的意見@pimvdb – Filip

1

你在你的代碼中的邏輯錯誤。最後一條if語句將始終執行,因爲您沒有使用else if連接您的if語句,一旦條件匹配,這會導致程序執行中斷。

0

您需要將if s變爲else if s(當然除了第一個)。現在他們每次都被評估。

0

這是因爲你這樣做:Math.floor(diff/day); diff/day的結果是0.75。如果你把它放下,那就是0。如果你改變日期,你會發現你的代碼工作得很好。

1

你的代碼工作正常。如果你看看你的代碼

    var rightNow = new Date("Wed, 21 Dec 2011 13:05:09 +0000"); 
       var then = new Date("Tue, 20 Dec 2011 19:05:09 +0000"); 

差異小於24小時,並給予0天。

我已經把

var then = new Date("Mon, 19 Dec 2011 19:05:09 +0000"); 

它給予1天前

+0

結果是正確的,但它不是想要的結果。如果差異小於一整天,則應以較低的分辨率顯示,如小時或分鐘。 – Guffa

相關問題