2017-10-13 14 views
1

複数の日付範囲を持つ配列があります。jQuery:日付が複数の日付範囲に含まれているかどうかを調べる

私はこのコードを今まで持っていましたが、今日の日付が日付の1つに含まれていても何らかの形で戻ってこないと思います。日付範囲

// An array of objects containing date ranges 
var datesArray = [{ 
    "from": "2/12/2016", 
    "to": "8/12/2016", 
    "schedule": 1 
}, { 
    "from": "11/10/2017", 
    "to": "16/10/2017", 
    "schedule": 2 
}, { 
    "from": "17/10/2017", 
    "to": "22/10/2017", 
    "schedule": 3 
}]; 

// Today's date 
var d = new Date(); 
var dd = d.getDate(); 
var mm = d.getMonth() + 1; 
var yyyy = d.getFullYear(); 
var today = dd + "/" + mm + "/" + yyyy; 
console.log("Today: " + today); 

// For each calendar date, check if it is within a range. 
for (i = 0; i < datesArray.length; i++) { 
    // Get each from/to ranges 
    var From = datesArray[i].from.split("/"); 
    var To = datesArray[i].to.split("/"); 
    // Format them as dates : Year, Month (zero-based), Date 
    var FromDate = new Date(From[2], From[1] - 1, From[0]); 
    var ToDate = new Date(To[2], To[1] - 1, To[0]); 
    var schedule = datesArray[i].schedule; 

    // Set a flag to be used when found 
    var found = false; 
    // Compare date 
    if (today >= FromDate && today <= ToDate) { 
    found = true; 
    console.log("Found: " + schedule); 
    } 
} 

//At the end of the for loop, if the date wasn't found, return true. 
if (!found) { 
    console.log("Not found"); 
} 

JsFiddle here

私はここで何が欠けていますか?おかげさまで @Taplarが言っ

+0

'today'は日付オブジェクトではありません。 'd'はです。それを比較しようか? – rybo111

+0

^とても良い点があります。ここに複数の問題があります。 – Taplar

+0

@ rybo111、これは私の問題を解決するのに役立ちました。あなたはコメントの代わりに答えを提供できますか? – Meek

答えて

0

todayは、文字列です。 todayStringtodayDateのような、よりわかりやすい変数名のメリットがあります。

+1getMonth()に送信すると、「今日」がわかりやすいかどうかはわかりません。

datesArrayがJavaScriptで決定されている場合は、代わりにDate()というオブジェクトを格納することができますが、これは例の目的で行ったかもしれません。

0

、簡単な修正:dDate()であるのに対し、あなたのコードで

var found = false 
// For each calendar date, check if it is within a range. 
for (i = 0; i < datesArray.length; i++) { 
..... 

    // Compare date 
    if (today >= FromDate && today <= ToDate) { 
    found = true; 
    console.log("Found: " + schedule); 
    break; //stop looping. 
    } 
} 

//At the end of the for loop, if the date wasn't found, return true. 
if (!found) { 
    console.log("Not found"); 
} 
関連する問題