Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 使用Moment js迭代检查Google日历API中的可用性_Javascript_Node.js_Momentjs_Google Calendar Api - Fatal编程技术网

Javascript 使用Moment js迭代检查Google日历API中的可用性

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 = [];

我正在尝试编写一个约会调度器后端(使用node.js),它检查日历上有哪些可用的时间段(使用谷歌日历API)。然后接受该查询并将其传递给date函数。查询完成后,该函数将创建一个30分钟的可用时隙数组,同时检查该时间范围是否在日历的繁忙查询中。如果插槽的时间范围介于另一个事件之间,则应继续移动,而不是将其推送到阵列

我的问题是当我有一些被占用的插槽,它只比较分钟,而不是小时

  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'
]