часы на js цикл
добрый день делаю расписаний часов и никак не могу сделать
const getTableHours = (from, to) => {
const sceduler = [];
for(let i = from; i < to; i++) {
for(let j = 0; j < 60/rangeDelay; j++) {
// sceduler.push( i + ":" + (j*rangeDelay < 9 ? "" + j*rangeDelay: j*rangeDelay) + "-" + i + ":" + ((j> 3 ? '60' : j+1 )*(rangeDelay)));
sceduler.push( i + ":" + (j*rangeDelay < 9 ? "" + j*rangeDelay: j*rangeDelay) + "-" + i + ":" + ((j+1)*(rangeDelay)));
}
}
return sceduler;
}
0: "08:0-08:15" 1: "08:15-08:30" 2: "08:30-08:45" 3: "08:45-08:60" 4: "9:0-9:15" 5: "9:15-9:30" 6: "9:30-9:45" 7: "9:45-9:60" 8: "10:0-10:15" 9: "10:15-10:30" 10: "10:30-10:45" 11: "10:45-10:60" 12: "11:0-11:15" 13: "11:15-11:30" 14: "11:30-11:45" 15: "11:45-11:60" |
Набросал на коленке, есть что улучшить.
/**
* @param {Date} start
* @param {Date} finish
* @param {int} activityDurationInSeconds
* @param {int} [breakInSeconds]
* @return {array}
*/
function makeSchedule(start, finish, activityDurationInSeconds, breakInSeconds = 0) {
[start, finish] = [start, finish].map(val => +val).sort((a, b) => a - b);
const formatter = dateTime => {
return [
dateTime.getHours(),
dateTime.getMinutes(),
].map(val => val > 9 ? val : '0' + val).join(':');
}
const result = [];
const setDate = (date => milliseconds => {
date.setTime(milliseconds);
return date;
})(new Date());
let time = start;
while (time < finish) {
result.push([
formatter( setDate(time) ),
formatter( setDate(time += activityDurationInSeconds * 1000) )
]);
time += breakInSeconds * 1000;
}
return result;
}
console.table(
makeSchedule(
new Date().setHours(08, 00),
new Date().setHours(16, 00),
15 * 60, // convert minutes to seconds
0
)
);
|
| Часовой пояс GMT +3, время: 00:19. |