我正在编写一个日历,它可以根据时隙设置可用时间和中断时间。
我有两个输入数据
{startTime:'07:00',endTime '21:00'}
{startTime:'08:00',结束时间:‘08:30’},{startTime:'10:00',结束时间:‘10:30’},{startTime:'12:00',结束时间:‘13:00’},{startTime:'15:00',结束时间:‘15:30’},{startTime:'18:00',
我需要细分的时间插槽取决于基本的开始和结束时间和断续期。
给出上面输入的数据,我想得到。
[{startTime: '07:00', endTime: '07:59'},
{startTime: '08:31', endTime: '09:59'},
{startTime: '10:31', endTime: '11:59'},
{startTime: '13:01', endTime: '14:59'},
{startTime: '15:31', endTime: '17:59'},
{startTime: '19:01', endTime: '21:00'}]发布于 2021-07-06 18:11:16
约简函数帮助管理数据转换。我使用一个单独的函数来增加/减去时间。
function getTimeFrom(time, diff) {
time = time.split(":");
let h = +time[0], m = +time[1]
if (time[1] == "00" && diff < 0) {
m = 60 + diff;
h -= 1;
} else m += diff;
return ("0" + h).slice(-2) + ":" + ("0" + m).slice(-2)
}
let worktime = [{startTime: '07:00', endTime: '21:00' }], breaktime = [{startTime: '08:00', endTime:'08:30'},
{startTime: '10:00', endTime:'10:30'},
{startTime: '12:00', endTime:'13:00'},
{startTime: '15:00', endTime:'15:30'},
{startTime: '18:00', endTime:'19:00'}]
let workdetail = breaktime.reduce((b, a, i) => {
if (i === 0) b[0].finalEndTime = b[0].endTime // save the value
b[i].endTime = getTimeFrom(a.startTime, -1)
a.startTime = getTimeFrom(a.endTime, 1)
if (i === breaktime.length - 1) {
a.endTime = b[0].finalEndTime; // our final end time for the day
delete b[0].finalEndTime // remove it
}
b.push(a);
return b;
}, worktime)
console.log(workdetail)
https://stackoverflow.com/questions/68274756
复制相似问题