2008-09-16 55 views
13

在JavaScript中,什麼是確定日期的有效範圍內提供瀑布的最佳方式是什麼?使用Javascript,我如何確保日期範圍有效?

這方面的一個例子可能是檢查,看看如果用戶輸入requestedDate是下一個有效的工作周的一部分。請注意,這不僅僅是檢查一個日期是否大於另一個日期,因爲有效日期將等於或大於範圍的下限,同時小於或等於範圍的上限。

回答

15

其實,這是我所見過拿出了很多我的作品前,下面的代碼位就是我的回答這個問題的問題。

// checkDateRange - Checks to ensure that the values entered are dates and 
//  are of a valid range. By this, the dates must be no more than the 
//  built-in number of days appart. 
function checkDateRange(start, end) { 
    // Parse the entries 
    var startDate = Date.parse(start); 
    var endDate = Date.parse(end); 
    // Make sure they are valid 
    if (isNaN(startDate)) { 
     alert("The start date provided is not valid, please enter a valid date."); 
     return false; 
    } 
    if (isNaN(endDate)) { 
     alert("The end date provided is not valid, please enter a valid date."); 
     return false; 
    } 
    // Check the date range, 86400000 is the number of milliseconds in one day 
    var difference = (endDate - startDate)/(86400000 * 7); 
    if (difference < 0) { 
     alert("The start date must come before the end date."); 
     return false; 
    } 
    if (difference <= 1) { 
     alert("The range must be at least seven days apart."); 
     return false; 
    } 
    return true; 
} 

現在有兩件事情需要注意有關該代碼,Date.parse功能應適用於大多數的輸入類型,但已經知道有問題,其中部分格式如「年月日」,所以你應該測試前使用它。但是,我似乎記得,大多數瀏覽器會根據計算機區域設置來解釋給Date.parse的日期字符串。

而且,86400000乘數應該是什麼日子,你正在尋找的範圍。所以如果你正在尋找至少相隔一週的日期,那麼它應該是七個。

+0

請更新開始和結束checkFileRange(開始,結束)的fromat很難chk – John 2012-07-04 13:17:54

7

所以,如果我currenctly明白,你需要看如果日期比其他更大。

function ValidRange(date1,date2) 
{ 
    return date2.getTime() > date1.getTime(); 
} 

然後您需要分析你是從UI獲得的字符串,Date.parse,像這樣:

ValidRange(Date.parse('10-10-2008'),Date.parse('11-11-2008')); 

這是否幫助?

+0

問題是沒有這麼多檢查,看看一個日期比其他的大,但檢查是否一個日期在給定範圍有效日期內。例如,如果業務要求是在接下來的七天內解決任務,那麼您希望確保預定日期小於或等於當前日期的七天。 – rjzii 2010-05-25 17:42:10

4
var myDate = new Date(2008, 9, 16); 

// is myDate between Sept 1 and Sept 30? 

var startDate = new Date(2008, 9, 1); 
var endDate = new Date(2008, 9, 30); 

if (startDate < myDate && myDate < endDate) { 
    alert('yes'); 
    // myDate is between startDate and endDate 
} 

您可以將多種格式傳遞給Date()構造函數來構造日期。你也可以構造一個新的日期與當前時間:

var now = new Date(); 

,並在其上設置各種屬性:

now.setYear(...); 
now.setMonth(...); 
// etc 

詳情請參閱http://www.javascriptkit.com/jsref/date.shtmlGoogle