2011-05-27 95 views
1

可能重複:
Get difference between 2 dates in javascript?如何檢查日期是否在30天內?

我存儲日期變量是這樣的:

var startYear = 2011; 
var startMonth = 2; 
var startDay = 14; 

現在我要檢查,如果當前日(今天)是下降的30開始日期的天數與否。 我可以這樣做嗎?

var todayDate = new Date(); 
var startDate = new Date(startYear, startMonth, startDay+1); 
var difference = todayDate - startDate; 

????

我不確定這是否在語法上或邏輯上正確。

+2

把「javascript日期比較」放到Google中。你嘗試過嗎? – 2011-05-27 15:50:59

回答

10

在JavaScript中,獲得兩個日期之間的時間跨度最好的辦法就是讓他們的「時間」值(因爲毫秒爲單位的數量),並轉換到這一點所需的單位。這裏是一個函數來獲取兩個日期之間的天數:

var numDaysBetween = function(d1, d2) { 
    var diff = Math.abs(d1.getTime() - d2.getTime()); 
    return diff/(1000 * 60 * 60 * 24); 
}; 

var d1 = new Date(2011, 0, 1); // Jan 1, 2011 
var d2 = new Date(2011, 0, 2); // Jan 2, 2011 
numDaysBetween(d1, d2); // => 1 
var d3 = new Date(2010, 0, 1); // Jan 1, 2010 
numDaysBetween(d1, d3); // => 365 
+0

我試過這個:http://pastie.org/1981365但它總是給我正整數...我想知道如果當前日期是之前或之後... – ssdesign 2011-05-27 16:05:12

+0

確定其工作。 – ssdesign 2011-05-27 16:07:29

+0

@ssdesign:如果開始日期在今天之前,你的代碼應該返回一個負整數;我的代碼可以通過去除減法周圍的'Math.abs'來修改。 – maerics 2011-05-27 16:12:46

1
(todayDate.getTime() - startDate.getTime())/(1000*60*60*24.0)