题目
获取一天内以半小时间隔的两个时间中的所有时间,并在截止时间前提前一小时。如果两个时间间隔小于1小时,输出空数组。(当小时小于10时需要对小时进行补零)。
示例
输入:
10:00 14:30
输出:
[10:00, 10:30, 11:00, 11:30, 12:00, 12:30, 13:00, 13:30]
我的解答
/**
* 获取从起始时间到截止时间的半小时间隔
* @param {string} startTime 开始时间 08:00
* @param {string} endTime 终止时间 17:00
*/
function getTime(startTime, endTime) {
var list = [];
const [ startHour, startMinutes ] = startTime.split(':').map(x => Number(x));
const [ endHour, endMinutes ] = endTime.split(':').map(x => Number(x));
if ((endHour - startHour) <= 1) {
return list;
}
let hour = startHour;
let minute = startMinutes;
const deadlineHour = endHour - 1;
list.push(`${fillZero(startHour)}:${startMinutes === 0 ? "00" : "30"}`);
while(hour !== deadlineHour) {
minute += 30;
if (minute === 60) {
hour += 1;
minute = 0;
list.push(`${fillZero(hour)}:00`);
} else {
list.push(`${fillZero(hour)}:30`);
}
}
if (endMinutes === 30) {
list.push(`${fillZero(deadlineHour)}:30`);
}
return list;
}
function fillZero(hour) {
return hour < 10 ? `0${hour}` : hour;
}