2017-02-28 9 views
3

アレイの日が翌日であるかどうかを確認するにはどうすればよいですか?日が日々であるかどうかをチェックする方法は?

var days = ['2017-02-28', '2017-03-01', '2017-03-02', '2017-03-03']; //should return true 

var days2 = ['2017-02-28', '2017-03-02', '2017-03-03', '2017-03-04']; //should return false 
+2

を試してみてください? –

答えて

3

あなたは、次のコード使用して、あなたが望むものを達成することができます:基本的に、あなたはそれぞれの日付を取る

var days = ['2017-02-28', '2017-03-01', '2017-03-02', '2017-03-03']; //should return true 
 
var days2 = ['2017-02-28', '2017-03-02', '2017-03-03', '2017-03-04']; //should return false 
 
var days3 = ['2017-02-28', '2017-03-01', '2017-04-02', '2017-04-03']; // should also return false 
 

 
function dayCheck(daysArray) { 
 
    for (var i = 1; i < daysArray.length; i++) { 
 
    var d = new Date(daysArray[i - 1]); 
 
    d.setDate(d.getDate() + 1); 
 
    if (new Date(daysArray[i]).getTime() != d.getTime()) 
 
     return false; 
 
    } 
 
    return true; 
 
} 
 
console.log(dayCheck(days)); 
 
console.log(dayCheck(days2)); 
 
console.log(dayCheck(days3));

を、それを増やして、それが次の日付と一致するかどうかを確認しますrray。

更新

としてはdays3における配列値のようなもののために失敗しgetDate()を使用して、指摘されたので、私はより堅牢思われ、代わりにgetTime()を使用するようにコードを変更しました。

+1

この場合、このコードは失敗しません: '['2017-02-28'、 '2017-03-01'、 '2017-04-02'、 '2017-04-03']'? – zahirdhada

+1

@ zahirdhada実際に大きな観測。 'getTime()'を使うように更新されました。もう問題にはなりません! –

2

このような何か、

function areDatesSequential(days) { 
    var seq = true; 
    var d = new Date(days[0]); 
    for(var i=1;i<days.length;i++) { 
     d.setDate(d.getDate() + 1); 
     var d2 = new Date(days[i]); 
     if(d.getDate() != d2.getDate() 
      || d.getMonth() != d2.getMonth() 
      || d.getFullYear() != d2.getFullYear()) { 
      seq = false; 
     } 
    } 

    return seq; 
} 
1

は、あなたがこれまでに試してみました何この

var days = ['2017-02-28', '2017-03-01', '2017-03-02', '2017-03-03']; 
// convert to timestamp 
var timestamps = days.map(function(day){ 
    var date = new Date(day); 
    return date.getTime(); 
}); 
console.log(timestamps); 
var result = true; 
for(var i = 1 /*from second el*/; i < timestamps.length; i++) { 
    // console.log(timestamps[i] - timestamps[i - 1]); 
    if (timestamps[i] - timestamps[i - 1] !== 86400000/* one day in milliseconds*/) { 
     result = false; 
     break; 
    } 
} 
console.log('res', result); 
1
function comp(date) 
{ 
    var dates = date; 
    var flag = false; 
    for(var i = 0 ; i < dates.length-1; i++) 
    { 
     var firstdate = new Date(dates[i]); 
     firstdate.setDate(firstdate.getDate() + 1); 
     var seconddate = new Date(dates[i+1]); 
     if(seconddate.getTime() == firstdate.getTime()) 
     { 
      flag = true; 
     } 
     else 
     { 
      flag = false; 
      return flag; 
     } 

    } 
    return flag; 
} 

function compare() 
{ 
    var days = ['2017-02-28', '2017-03-02', '2017-03-03', '2017-03-04']; 
    var abc = comp(days); 
} 
関連する問題