日期时间范围与日期时间范围的比较

后台给的数据类型为下图,在表格中渲染它是否在对应的时间段之内

    var data = {
        id: 1,
        name: 'Sinwer',
        list: [{
                startTime: '9:10',
                endTime: '10:20'
            },
            {
                startTime: '14:20',
                endTime: '16:33'
            }
        ]
    };

这是最终效果
clipboard.png
我尝试用moment来进行比较,但是无论我怎么写逻辑最后的结果都不是预期的那样,问一下判断的逻辑怎么写?谢谢了

    function diffTime(data) {
        var DiffTime = [ {
                s: "9:00",
                e: '10:00',
                flag:false
            },{
                s: "10:00",
                e: '11:00',
                flag:false
            },{
                s: "11:00",
                e: '12:00',
                flag:false
            },{
                s: "13:00",
                e: '14:00',
                flag:false
            },{
                s: "14:00",
                e: '15:00',
                flag:false
            }, {
                s: "15:00",
                e: '16:00',
                flag:false
            },{
                s: "16:00",
                e: '17:00',
                flag:false
            },{
                s: "17:00",
                e: '18:00',
                flag:false
            }
        ];
        for (var j in  DiffTime) {
            if(  //判断写的不对~_~!
                // moment('2017 07 26 '+data.startTime).isBetween('2017 07 26 '+DiffTime[j].s,'2017 07 26 '+DiffTime[j].e) || 
               // moment('2017 07 26 '+data.startTime).isAfter('2017 07 26 '+DiffTime[j].s) && moment('2017 07 26 '+data.startTime).isAfter('2017 07 26 '+DiffTime[j].s)
                moment('2017 07 26 '+data.startTime).isAfter('2017 07 26 '+DiffTime[j].s) ||
                moment('2017 07 26 '+data.endTime).isBefore('2017 07 26 '+DiffTime[j].e) 
             ){
                DiffTime[j].flag = true;
            }
        }
        return DiffTime;
    }
    var timeArr = diffTime(data.list[0]);
    console.table(timeArr);
阅读 2.6k
1 个回答

试下这个吧,没多测

var data = {
        id: 1,
        name: 'Sinwer',
        list: [{
                startTime: '9:10',
                endTime: '10:20'
            },
            {
                startTime: '14:20',
                endTime: '16:33'
            }
        ]
    };
    function diffTime(data) {
        var DiffTime = [ {
                s: "9:00",
                e: '10:00',
                flag:false
            },{
                s: "10:00",
                e: '11:00',
                flag:false
            },{
                s: "11:00",
                e: '12:00',
                flag:false
            },{
                s: "13:00",
                e: '14:00',
                flag:false
            },{
                s: "14:00",
                e: '15:00',
                flag:false
            }, {
                s: "15:00",
                e: '16:00',
                flag:false
            },{
                s: "16:00",
                e: '17:00',
                flag:false
            },{
                s: "17:00",
                e: '18:00',
                flag:false
            }
        ];
        var temparr;
        for(var j in DiffTime){

            temparr = DiffTime[j].s.split(":");
            var stime = parseInt(temparr[0])*60+parseInt(temparr[1]);
            temparr = DiffTime[j].e.split(":");
            var etime = parseInt(temparr[0])*60+parseInt(temparr[1]);

            for(var i=0;i<data.length;i++){
                temparr = data[i].startTime.split(":");
                var side1 = parseInt(temparr[0])*60+parseInt(temparr[1]);
                temparr = data[i].endTime.split(":");
                var side2 = parseInt(temparr[0])*60+parseInt(temparr[1]);
                if((side1 >= stime && side1 <= etime) || (side2 >= stime && side2 <= etime) || (side1<=stime && side2 >= etime)){
                    DiffTime[j].flag = true;
                    break;
                }
            }
        }
        
        return DiffTime;
    }
    var timeArr = diffTime(data.list);
    console.table(timeArr);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题