js判断月份时候是否连续

数组是这样的 ["2016-12", "2017-1", "2017-2"] 如何用js判断月份是否连续的,在线等大神

不知道你JS学的怎么样,先给你说逻辑,如果代码有问题回复我。
首先截取你的数组中每个数据的前四位(或者直接以-分割你的文本,然后转为数字类型),
开头四位做比较如果相同,则对-后面的经行比较,如果相减的值为-2,则判定为连续,
如果开头四位不相同,则两者想减,如果!=-1,则不连续,
如果==-1则进行后面的判断,前一个为12.后一个为1.则连续,否则也不连续。

var arr = ['2016-9', '2016-10', '2016-11', '2016-12', '2017-1', '2017-2'];
var tmpday = null;
//是否连续的标志
var lianxu = true;
for(var i=arr.length-1; i>=0; i--){
var dateStr = arr[i].split('-');
var date = new Date(parseInt(dateStr[0]), parseInt(dateStr[1], 10) - 1, 1, 0, 0, 0);
if(tmpday == null) {
tmpday = date;
} else {
tmpday.setMonth(tmpday.getMonth() - 1);//比较是否相差一个月
if(date.getTime() != tmpday.getTime()) {
//月份没有连续
lianxu = false;
break;
}
}
}

如果有帮助,希望采纳...

答案都好深奥啊!多多学习

可以先把时间全部转化为毫秒数,再比较前后两位的差值是否为24*60*60*1000(即一天的时间)即可

alert(checkIsContinuous(['2016-9', '2016-10', '2016-11', '2016-2', '2017-1', '2017-2']));
        function checkIsContinuous(arr){
            var arrYear = [];
            var arrDay = [];
            if(arr.length === 0){
                return 0;
            } else if(arr.length === 1) {
                return 1;
            } 
            for(var i in arr){
                var temp = arr[i].split("-");
                arrYear.push(parseInt(temp[0]));
                arrDay.push(parseInt(temp[1]));
            }
            return checkContinuousFunc(arrYear, arrDay);

        }
        function checkContinuousFunc(arrYear, arrDay){
            var result = true;
            for(var i in arrYear){
                i = parseInt(i);
                var isYearInteger = typeof arrYear[i + 1] ===  'number';
                var isDayInteger = typeof arrDay[i + 1] ===  'number';
                if(!isYearInteger || !isDayInteger){
                    break;
                }
                result = false;
                if(arrYear[i] === arrYear[i + 1]){
                    if((arrDay[i] + 1) === arrDay[i + 1]){
                        result = true;
                    }
                } else if((arrYear[i] + 1) === arrYear[i + 1]){
                    if(arrDay[i] === 12){
                        result = arrDay[i + 1] === 1;
                    } else if((arrDay[i] + 1) === arrDay[i + 1]){
                        result = true;
                    }
                }
                if(!result) {
                    return result;
                }
            }
            return result;
        }