我在08:00-17:00之间有大量的预订申请位。 每个时段都是5分钟,我已经删除了所有与已预订的时段重叠的时段。
例如,在11:00-12:50之间已经有一个事件,因此该时隙不可用。
{
"date": "2019-03-15",
"start": "2019-03-15T09:15:00.000Z",
"starttime": "10:15",
"end": "2019-03-15T09:45:00.000Z",
"endtime": "10:45"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:20:00.000Z",
"starttime": "10:20",
"end": "2019-03-15T09:50:00.000Z",
"endtime": "10:50"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:25:00.000Z",
"starttime": "10:25",
"end": "2019-03-15T09:55:00.000Z",
"endtime": "10:55"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:30:00.000Z",
"starttime": "10:30",
"end": "2019-03-15T10:00:00.000Z",
"endtime": "11:00"
},
{
"date": "2019-03-15",
"start": "2019-03-15T11:50:00.000Z",
"starttime": "12:50",
"end": "2019-03-15T12:20:00.000Z",
"endtime": "13:20"
},
但是,在将其退还给最终用户之前,我需要删除所有元素,因此每个插槽之间有20分钟的间隔。 因此,我希望每隔5分钟而不是每5分钟插入一次。所以结束时间必须是10:20 ... 10:40 ... 11:00 .. 所有事件都不得与已预订的事件有差距。 因此,每个插槽都必须有一个连接到现有事件的插槽。
我应该怎么做?
答案 0 :(得分:0)
将Json对象放入数组中并执行以下代码。
搜索是用于查找时隙的变量。
function toDate(dStr,format) {
var now = new Date();
if (format == "h:m") {
now.setHours(dStr.substr(0,dStr.indexOf(":")));
now.setMinutes(dStr.substr(dStr.indexOf(":")+1));
now.setSeconds(0);
return now;
}else
return "Invalid Format";
}
let serach="13:10";
let value = sample.filter((val) => {
if( (toDate(val.endtime,"h:m").toTimeString() >= toDate(serach,"h:m").toTimeString()) && (toDate(val.starttime,"h:m").toTimeString() <= toDate(serach,"h:m").toTimeString()) ){
return val.starttime;
}
})
value将保留其时隙与json中的日期匹配的数组