Javascript / Moment - 生成时隙的问题

时间:2018-01-16 15:34:20

标签: javascript momentjs

我正在尝试生成每个时间间隔为15分钟的时隙,如下所示:

["15:30", "15:45", "16:00", "16:15"...]

到目前为止,我成功了。但是,如果当前时间是15:25(只是一个示例),生成的数组将从我需要​​的15:30开始(在这种情况下)生成从16:00开始的时隙,这意味着只有第一个时段应与当前时间差不多30 min

目前,我有以下代码:

//Used momentJS library
function getTimeStops(end) {
  var roundedUp, startTime, endTime, timeStops;
  roundedUp = Math.ceil(moment().utc().minute() / 30) * 30;
  startTime = moment().utc().set({
    minute: roundedUp
  });
  endTime = moment(end, 'HH:mm');

  if (endTime.isBefore(startTime)) {
    endTime.add(1, 'day');
  }

  timeStops = [];

  while (startTime <= endTime) {
    timeStops.push(new moment(startTime).format('HH:mm'));
    startTime.add(15, 'minutes');
  }
  return timeStops;
}

var timeStops = getTimeStops('02:00');
console.log('timeStops ', timeStops);

1 个答案:

答案 0 :(得分:0)

你在这里四舍五入到最近的半小时:

roundedUp = Math.ceil(moment().utc().minute() / 30) * 30;

舍入到最近的小时:

roundedUp = Math.ceil(moment().utc().minute() / 60) * 60;

编辑:刚才意识到上述内容是错误的,并没有真正回答你的问题。

您确实需要更改roundedUp值。

您需要做的是:

  1. 添加30分钟到当前时间
  2. 将其舍入到最近的15分钟间隔
  3. 那样 - 最多 - 你将会有7.5分钟的时间。

    因此,对于第1步,添加30分钟

    var add30mins = moment.utc().add(30, 'minutes')
    

    现在我们需要找到最近的15分钟间隔。

    var roundTo15Mins = Math.round(add30Mins.minute() / 15) * 15;
    

    然后你可以将它插入你的startTime。

    HTH