Estou tentando encontrar uma maneira de obter uma matriz de tempos com base na hora de início, hora de término e duração em minutos.
Por exemplo: Hora de início: 9 Hora de término: 17 Duração: 15
Eu fiz isso com êxito, fazendo um loop sobre a hora inicial e final e, em seguida, tenho um loop dentro desse loop para calcular os minutos.
function getTimesArray(start, end, length) {
var time_array = [];
var duration = length / 60;
var count = 0;
for (var i = start, len = end; i < len; i++) {
var minutes = 1 / duration;
for (var b = 0, leng = minutes; b < leng; b++) {
var min = length * b;
time_array[count] = i + ':' + (min == 0 ? "00" : min);
count ++;
}
}
time_array[time_array.length+1] = i + ':' + "00";
return time_array;
}
https://jsfiddle.net/wvtpqx8c/
O problema com isso é que você só pode colocar uma duração de no máximo 60 minutos, porque sempre ocorre um loop ao longo das horas.
O que eu preciso é ser capaz de calcular os tempos, não importa quantos minutos a duração tenha. Por exemplo, se a duração for 120, ele deve ser mostrado a cada 2 horas, do início ao fim.
Isso será um pouco mais fácil se você pensar em tudo em termos de minutos e calcular as horas: minutos quando você faz a corda. Isso permitirá que você use um while
loop simples em vez de um for
loop complicado com condições. Em seguida, você pode simplesmente adicionar os minutos ao horário de início e terminar quando for maior ou igual ao horário de término:
function getTimesArray(start, end, length) {
let startMin = start * 60
let endMin = end * 60
let times = []
while (startMin <= endMin){
let mins = startMin % 60
let hours = Math.floor(startMin / 60)
let timeString = hours.toString() + ":" + mins.toString().padStart(2, '0')
times.push(timeString)
startMin += length
}
return times
}
console.log(getTimesArray(1,6, 12))
console.log(getTimesArray(4,8, 110))
Isso não inclui o final se a duração ultrapassá-lo como no segundo exemplo acima, pois isso adicionaria uma duração diferente da duração. No entanto, seria uma coisa simples empurrar mais uma vez se você precisar disso.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras