2015-06-03 28 views
0

我在这里的逻辑有点困难,它已经越来越晚了,说实话,我很难过。迭代通过时隙

我需要通过时隙循环。

var settings = { 
    startOfWeek:0, //0 = Sunday, 1 = Monday 
    timeSlotGap: 30, 
    minTime: "09:00:00", 
    maxTime: "17:30:00", 
    numSlots: 0 
}; 

因此,我可以指定一个时隙的间隙,因此,如果我是通过时隙(具有30分钟的间隔)来迭代这将是:

09:00 
09:30 
10:00 
10:30 

目前我有以下内容:

$(document).ready(function() { 

    getNumSlots(settings.minTime, settings.maxTime, settings.timeSlotGap); 

    for(var i = 1; i<=settings.numSlots; i++){ 
     //I have no idea what I'm doing here 
     $('#calendar').append("<p>Timeslot:" + i +"</p>"); 
    } 


}); 
var WeekNo = moment().week(); 
var CurrentDate = getCurrentDate(); 
var WeekDay = moment().weekday(); 



var settings = { 
    startOfWeek:0, //0 = Sunday, 1 = Monday 
    timeSlotGap: 60, 
    minTime: "09:00:00", 
    maxTime: "17:30:00", 
    numSlots: 0 
}; 


if(settings.startOfWeek == 0){ 
    WeekDay = WeekDay - 1; 
} 


function getNumSlots(minTime, maxTime, timeSlotGap){ 
    var minTimeSplit = minTime.split(":"); 
    var hourStart = new Date("01/01/1900 " + minTime).getHours(); 
    var hourEnd = new Date("01/01/1900 " + maxTime).getHours(); 

    var minStart = new Date("01/01/1900 " + minTime).getMinutes(); 
    var minEnd = new Date("01/01/1900 " + maxTime).getMinutes(); 


    var diffHour = hourEnd - hourStart; 
    var diffMins = minEnd - minStart; 

    var slots = ((diffHour * 60) + diffMins)/timeSlotGap; 

    settings.numSlots = slots; 
} 

如果是通过30/60分钟这不会是一个问题,但因为我可以指定时间段即,90分钟任何事情它使一个稍微难循环一样简单。

回答

3

为了让你可以使用类似下面的时隙:

var settings = { 
    startOfWeek:0, //0 = Sunday, 1 = Monday 
    timeSlotGap: 30, 
    minTime: "09:00:00", 
    maxTime: "17:30:00", 
    numSlots: 0 
}; 

function getTimeDate(time) { 
    var timeParts = time.split(':'); 
    var d = new Date(); 

    d.setHours(timeParts[0]); 
    d.setMinutes(timeParts[1]); 
    d.setSeconds(timeParts[2]); 

    return d; 
} 

function getTimeSlots(startDate, endDate, interval) { 
    var slots = []; 

    var intervalMillis = interval * 60 * 1000; 

    while (startDate < endDate) { 
     // So that you get "00" if we're on the hour. 
     var mins = (startDate.getMinutes() + '0').slice(0, 2); 
     slots.push(startDate.getHours() + ':' + mins); 
     startDate.setTime(startDate.getTime() + intervalMillis); 
    } 

    return slots; 
} 

var slots = getTimeSlots(
    getTimeDate(settings.minTime), getTimeDate(settings.maxTime), settings.timeSlotGap 
); 

下面是一个例子​​。

+0

嗨jabclab,这不是我试图得到的时间段数。这是时间自己的时间价值,即9点30分,10点10分,10点30分等,如果不明确,则表示抱歉。 –

+0

@Jezzabeanz我的错误:)将更新答案 – jabclab

+0

啊,它是完美的。谢谢@ jabclab! –