我正在尝试生成每个时间间隔为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);
答案 0 :(得分:0)
你在这里四舍五入到最近的半小时:
roundedUp = Math.ceil(moment().utc().minute() / 30) * 30;
舍入到最近的小时:
roundedUp = Math.ceil(moment().utc().minute() / 60) * 60;
编辑:刚才意识到上述内容是错误的,并没有真正回答你的问题。
您确实需要更改roundedUp
值。
您需要做的是:
那样 - 最多 - 你将会有7.5分钟的时间。
因此,对于第1步,添加30分钟
var add30mins = moment.utc().add(30, 'minutes')
现在我们需要找到最近的15分钟间隔。
var roundTo15Mins = Math.round(add30Mins.minute() / 15) * 15;
然后你可以将它插入你的startTime。
HTH