2016-02-07 330 views
3

我需要檢查兩個日期之間的差異 - 從數據庫和實際,但在幾分鐘內在JS/jQuery(我需要運行函數來檢查ajax)。
這是我的日期格式:在兩個日期(日期時間)之間的差異

19-01-2016 22:18 

我需要的是這樣的:

if ((date_actual - date_db) < 1 minute) { 
    //do something 
} 

我怎樣才能做到這一點?

編輯:我創造了這樣的事情,但我總是得到相同的日誌,它不會改變 - http://jsbin.com/xinaki/edit?js,console

編輯2:在這裏,它的工作代碼,現在它檢查在同一時刻/分鐘,例如十二時50分50秒和12時50分58秒顯示日誌僅此2秒,但我需要「留」登錄爲1分鐘
http://jsbin.com/laruro/edit?js,console

回答

2

假設所有日期在相同的格式,並且它們都是字符串,你可以使用這個輔助函數的字符串之一或兩者轉化爲實Date()對象:

var makeDate = function(dateString) { 
    var d = dateString.split(/[\s:-]+/); 
    return new Date(d[2],d[1] - 1,d[0],d[3],d[4]); 
} 

,然後用它像這樣比較字符串爲當前日期

var diffInMin = function(dateString) { 
    return (new Date() /* < current date */ - makeDate(dateString))/(1000 * 60); 
}; 

或類似這樣的比較兩個日期字符串

var diffInMin = function(dateString1, dateString2) { 
    // this assumes date string one will always be more recent than DateString2 
    return (makeDate(dateString1) - makeDate(dateString2))/(1000 * 60); 
}; 
+0

如果日期是「19-01-2016 22:18」和「19-01-2017 22:18」,你的差異將會是「0」 – avrahamcool

+0

@avrahamcool謝謝你的注意,我認爲這個新的解決方案應該工作 – pedrotp

+0

@avrahamcool這很好!但是...我需要檢查1分鐘。在兩個日期之間。現在它在同一時間檢查,例如。 12:50:50和12:50:58顯示日誌只有這2秒,但我需要'保持'登錄1分鐘 – Vertisan

0

試試這個功能

function diffInMin(dateString1, dateString2){ 
    return (+ new Date(dateString2) - new Date(dateString1))/(1000*60) 
} 
+0

我做這樣的事情,但我總是得到FALSE - HTTP:// jsbin .com/xinaki /編輯?js,控制檯 – Vertisan

+0

對不起,在函數中有兩次被使用過dateString2。 –

+0

不幸的是,這不會工作,因爲日期不是'Date()'對象的正確格式。 – pedrotp