如何减去特定时间部分javascript momentjs

how to subtract specific part of time javascript momentjs

我想减去时间的特定部分。我用 timeSlot 减去 bookedSlot 和持续时间,然后 return 中断插槽数组。

const timeSlots [{from: '10:00 am', to: '01:00 pm'}];
const bookedSlot = "12:00 pm"
const duration = "30min"

成绩需要

const res = [
 {from: '10:00 am', to: '12:00 pm'},
 {from: '12:30 am', to: '01:00 pm'}
]

如果我答对了你的问题,这是一些你可能会考虑作为问题解决方案的基本代码。 这是一个非常粗略的解决方案,如果您愿意,可以简化它。

function getFreeSlots(startInterval, endInterval, slotStartTime, slotDurationMin){
  var startTime = moment(startInterval, 'HH:mm');
  var endTime = moment(endInterval, 'HH:mm');
  var slotTime = moment(slotStartTime, 'HH:mm');
  var timeSlots = [];

  // we are going to add 1 day in case startTime > endTime 
  if(endTime.isBefore(startTime))
    endTime.add(1, 'day');

  // split interval into slots
  // first slot
  timeSlots.push({
    "from": startTime.format('HH:mm'),
    "to": slotTime.format('HH:mm')
  });
  
  var slotEndTime = slotTime.add(slotDurationMin, "minutes")
  // second slot
  timeSlots.push({
    "from": slotEndTime.format('HH:mm'),
    "to": endTime.format('HH:mm')
  });
  return timeSlots;
}

var res = getFreeSlots("10:00 am", "13:00 pm", "12:00 pm", 30);
console.log(res);

您可能只需要为

添加一些变压器
const duration = "30min"

因此,您可以将一些确定的间隔传递给函数。