Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将日期范围拆分为时间间隔?_Javascript_Jquery_Fullcalendar_Momentjs - Fatal编程技术网

Javascript 如何将日期范围拆分为时间间隔?

Javascript 如何将日期范围拆分为时间间隔?,javascript,jquery,fullcalendar,momentjs,Javascript,Jquery,Fullcalendar,Momentjs,我正在使用 通过选择数据范围,我可以检查所选范围内有多少项 现在,我需要根据日历间隔(15分钟)将这些任务划分为时间间隔,以验证是否有两个事件相邻。如果在同一时间间隔内有两个事件(事件1和事件2),则用户不能选择此时间间隔 怎么做 $(文档).ready(函数(){ $(“#日历”).fullCalendar({ 标题:{ 左:“上一个,下一个今天”, 中心:'标题', 右图:“agendaDay” }, defaultView:'agendaDay', 全天时段:错, 滚动时间:“10:00

我正在使用

通过选择数据范围,我可以检查所选范围内有多少项

现在,我需要根据日历间隔(15分钟)将这些任务划分为时间间隔,以验证是否有两个事件相邻。如果在同一时间间隔内有两个事件(事件1和事件2),则用户不能选择此时间间隔

怎么做

$(文档).ready(函数(){
$(“#日历”).fullCalendar({
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“agendaDay”
},
defaultView:'agendaDay',
全天时段:错,
滚动时间:“10:00:00”,
慢速持续时间:“00:15:00”,
minTime:'06:45:00',
maxTime:'23:15:00',
eventDurationEditable:true,
eventStartEditable:true,
是的,
selectHelper:对,
活动:[
{
标题:“事件1”,
开始:矩().格式('YYYY-MM-DD')+'T10:30:00',
结束:矩().格式('YYYY-MM-DD')+'T10:45:00'
},
{
标题:“事件2”,
开始:矩().格式('YYYY-MM-DD')+'T10:30:00',
结束:矩().格式('YYYY-MM-DD')+'T10:45:00'
},
{
标题:“更长的事件”,
开始:矩().格式('YYYY-MM-DD')+'T12:30:00',
结束:矩().格式('YYYY-MM-DD')+'T13:45:00'
},
{
标题:"会议",,
开始:矩().格式('YYYY-MM-DD')+'T13:45:00',
结束:矩().格式('YYYY-MM-DD')+'T14:00:00'
}
],
选择:功能(开始、结束){
log('Events:'+getEventsByTime(start,end).length);
log(getEventsByTime(start,end));
}
});
});
函数getEventsByTime(开始、停止){
var todaysEvents=$('div[name=calendar]')。fullCalendar('clientEvents',函数(事件){
报税表(

(event.start>=start&&event.end=event.start&&stop=event.start&&start我知道了。她的解决方案是:

选择:功能(开始、结束){
log('Events:'+getEventsByTime(start,end).length);
var ev=getEventsByTime(开始、结束);
控制台日志(ev);
var-itms={};
ev.forEach(功能(条目){
var begin=力矩(entry.start);
var最终=力矩(输入端);
while(开始差异(最终)<0){
itms[begin]=(itms[begin]| | 0)+1;
如果(itms[begin]>=MaxEventsInterval){
log('.'警告'.'超过最大事件数!');
}
开始=时刻(开始)。加上('秒',900);
}
});
控制台日志(itms);
}
$(document).ready(function() {

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'agendaDay'
        },
        defaultView: 'agendaDay',
        allDaySlot: false,
        scrollTime: '10:00:00',
        slotDuration: '00:15:00',
        minTime: '06:45:00',
        maxTime: '23:15:00',
        eventDurationEditable: true,
        eventStartEditable: true,

        selectable: true,
        selectHelper: true,
        events: [
            {
                title: 'Event 1',
                start: moment().format('YYYY-MM-DD') + 'T10:30:00',
                end: moment().format('YYYY-MM-DD') + 'T10:45:00'
            },
            {
                title: 'Event 2',
                start: moment().format('YYYY-MM-DD') + 'T10:30:00',
                end: moment().format('YYYY-MM-DD') + 'T10:45:00'
            },
            {
                title: 'Longer Event',
                start: moment().format('YYYY-MM-DD') + 'T12:30:00',
                end: moment().format('YYYY-MM-DD') + 'T13:45:00'
            },
            {
                title: 'Meeting',
                start: moment().format('YYYY-MM-DD') + 'T13:45:00',
                end: moment().format('YYYY-MM-DD') + 'T14:00:00'
            }
        ],
        select: function(start, end) {
            console.log( 'Events :' + getEventsByTime( start, end ).length );
            console.log( getEventsByTime( start, end ) );
        }
    });

});


function getEventsByTime( start, stop ) {
    var todaysEvents = $('div[name=calendar]').fullCalendar('clientEvents', function(event) {

       return ( 
           ( event.start >= start && event.end <= stop ) || 
           ( start >= event.start && stop <= event.end)  || 
           (start <= event.start && stop >= event.start) ||
           (start >= event.start && start <= event.end)
       );
    });
    return todaysEvents;
}
select: function(start, end) {
    console.log( 'Events :' + getEventsByTime( start, end ).length );
    var ev = getEventsByTime( start, end );
    console.log( ev );
    var itms = {};            

    ev.forEach(function(entry){

      var begin = moment(entry.start);
      var final = moment(entry.end);


    while( begin.diff(final) < 0 ) {
        itms[begin] =  ( itms[begin] || 0) + 1;
        if( itms[begin] >= maxEventsInInterval ) {
            console.log(' __ WARNING __ , max events exceeded! ');
        }

        begin = moment(begin).add('seconds', 900);
    }

});
    console.log( itms );
}