У меня есть цикл, который получает время, в котором я буду недоступен
как:
{'start'=>'06:00 pm','end'=>'08:00 am'} // i will be not available after 6PM
{'start'=>'09:00 am','end'=>'11:00 am'} // i will be not available b/w this range
я делаю цикл полного дня с интервалом в 30 минут, если мое заданное время не пришло в заданные диапазоны, это покажет, что я доступен в это время.
Мой код:
function isInBlockRange(blockdata,time)
{
var tReturn = false;
if(blockdata.length>0)
{
var currentTime = moment(time,'hh:mm a');
for(var i = 0; i < blockdata.length; i++){
var BlockTimseStart = moment(blockdata[i].start,'HH:mm a');
var BlockTimseEnd = moment(blockdata[i].end,'HH:mm a');
if ( (BlockTimseStart.hour() >=12 && BlockTimseEnd.hour() <=12 ) || BlockTimseEnd.isBefore(BlockTimseStart) )
{
BlockTimseEnd.add(1, "days"); // handle spanning days endTime
if (currentTime.hour() <=12 )
{
currentTime.add(1, "days"); // handle spanning days currentTime
}
}
if(currentTime.isBetween(BlockTimseStart,BlockTimseEnd, null, '[)') == false)
{
tReturn = false;
}
else
{
tReturn = true;
}
}
return tReturn;
}
else
{
return true;
}
}
//// вызов метода в цикле
for (var i = 0; i < 48; i++) {
time = moment(time, 'hh:mm A').add((30), 'm').format('hh:mm A');
if(isInBlockRange(blockTimeArray,time) == false){
console.log("available");
}
}