Javascript 使用Moment js迭代检查Google日历API中的可用性
我正在尝试编写一个约会调度器后端(使用node.js),它检查日历上有哪些可用的时间段(使用谷歌日历API)。然后接受该查询并将其传递给date函数。查询完成后,该函数将创建一个30分钟的可用时隙数组,同时检查该时间范围是否在日历的繁忙查询中。如果插槽的时间范围介于另一个事件之间,则应继续移动,而不是将其推送到阵列 我的问题是当我有一些被占用的插槽,它只比较分钟,而不是小时Javascript 使用Moment js迭代检查Google日历API中的可用性,javascript,node.js,momentjs,google-calendar-api,Javascript,Node.js,Momentjs,Google Calendar Api,我正在尝试编写一个约会调度器后端(使用node.js),它检查日历上有哪些可用的时间段(使用谷歌日历API)。然后接受该查询并将其传递给date函数。查询完成后,该函数将创建一个30分钟的可用时隙数组,同时检查该时间范围是否在日历的繁忙查询中。如果插槽的时间范围介于另一个事件之间,则应继续移动,而不是将其推送到阵列 我的问题是当我有一些被占用的插槽,它只比较分钟,而不是小时 function date(req,res,hours, events){ var slots = [];
function date(req,res,hours, events){
var slots = [];
const reqDay = moment(req.body.time);
var rightNow = moment(reqDay).hours(hours.start);
var cutoff = moment(reqDay).hours(hours.end)
var duration = moment.duration({'minutes' : 30});
for( rightNow ; rightNow.isBefore(cutoff) ; rightNow.add(duration) ){
// Check if we're going beyond the daily cutoff, go to the next day
if(rightNow.isAfter(moment(rightNow).hour(hours.end))){
rightNow.add(1, 'days').hour(hours.start);
}
const range1 = moment.range(rightNow, moment(rightNow).add(30, 'minutes'))
for (var i = 0; i < events.length; i ++ ) {
const prevRange = moment.range(events[i][0], events[i][1])
if(range1.overlaps(prevRange)){
console.log(rightNow)
rightNow.add(duration)
}else {
if (i = events.length) {
slots.push(rightNow.format('HH:mm'));
}else {
i ++
}
}
}
}
console.log(slots)
res.json(slots);
}
我错过了什么
[
[
Moment<2020-10-12T10:30:00-03:00>,
Moment<2020-10-12T13:15:00-03:00>
],
[
Moment<2020-10-12T16:30:00-03:00>,
Moment<2020-10-12T17:30:00-03:00>
]
]
[
'10:00', '11:00',
'12:00', '13:00',
'13:30', '14:00',
'14:30', '15:00',
'15:30', '16:00',
'16:30', '17:00',
'17:30'
]