2017-09-21 11 views
0
function isInDate(MatchDate, entries) { 
    for (c = 0; c < entries.length; c++) { 
     var entry = entries[c]; 
     var DateFrom = new Date(entry.DateFrom); 
     var DateTo = new Date(entry.DateTo); 

     if (
      DateFrom.getMonth() <= MatchDate.getMonth() && 
      DateFrom.getDay() <= MatchDate.getDay() && 
      DateTo.getDay() >= MatchDate.getDay() 
     ) { 
      return true; 
     } 
    } 

    return false; 
} 

返されるタイムラインに一致する場合は、「DateFrom」と「DateTo」の各ループエントリと比較したい「MatchDate」を渡します。 true、そうでない場合はfalse一致する場合はtrueを返します。一致する場合はtrueを返します。

またDateTromと同じ日にDateFrom &と同じ日がtrueの場合はtrueを返す必要があります。私が試してみるとうまく動作するようにはできません。

+2

スタイルノート:(下キャメルケースを使用'matchDate'、' dateFrom'など)を返します。 –

+0

ループ内の変数も宣言する必要があります: 'for(var c = 0; ...)'。 – RobG

+0

日付のいずれかを一致させたい場合、または一致しない場合はfalseを返しますか? – PHPglue

答えて

3

getDayは、月の日ではなく曜日を返します。

あなたはgetDate()

を使用したいそして、あなたは単純に

return MatchDate >= DateFrom && MatchDate <= DateTo; 
0

はようにする必要がありますすることができます

var pre = onload, isInDate; //for use on other loads 
 
onload = function(){ 
 
if(pre)pre(); 
 
isInDate = function(MatchDate, entries){ 
 
    for(var c=0,l=entries.length; c<l; c++) { 
 
    var entry = entries[c], DateFrom = new Date(entry.DateFrom), DateTo = new Date(entry.DateTo); 
 
    var md = MatchDate.getTime(); 
 
    if(!(DateFrom.getTime() <= md && DateTo.getTime() >= md)){ 
 
     return false; 
 
    } 
 
    } 
 
    return true; 
 
} 
 
}

関連する問題