1. 程式人生 > >js計算2個日期之間相差天數

js計算2個日期之間相差天數

思路無非是先獲取2個時間點的時間戳,通過時間戳的差值進行時間計算來獲取相差的天數,網上幾乎都是這樣的寫法,如下:

var diff = parseInt(Math.abs(date1 - date2) / 1000 / 60 / 60 /24) //把相差的毫秒數轉換為天數  

date1和date2分別是2個日期的時間戳,因為加上了絕對值,所以不分先後。

但是parseInt一般都是將字串轉化為Int型別,而Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24計算出的結果很明顯是浮點型別資料,雖然從實際效果上確實沒什麼區別,不過我還是偏向於這樣寫:

Math.floor(Math.abs(k1 - k2) / 1000 / 60 / 60 /24)
兩種方法不同,但是結果一樣,都是向下去整,但是這樣的方法只適合用來獲取絕對的時間差,而很多情況下這與我們所期望得到的結果不一致,以我現在做的專案為例:

我現在知道起始時間是2015/5/8 15:31:57,結束時間是2015/5/28 10:34:46,我想知道這2個時間點之間相差多少天,這個時候用上面的方法就不妥了,上面的方法算出來是19,而實際上應該是20,這是一個四捨五入的問題,所有我們應該稍加修改一下方法,使計算出的結果四捨五入成我們想要的整數天數,如下:

Math.floor(Math.abs(k1 - k2) / 1000 / 60 / 60 /24 + 0.5);

這樣計算出的結果才是我想要的結果。

至於js轉換成時間戳的方法,如果是Date物件,則直接呼叫getTime()方法就可以獲得毫秒時間戳。如果是時間字串,則用正則表示式匹配將字串替換成js所識別的標準格式,new一個Date物件即可。