Como obtenho uma matriz de horários com hora de início, hora de término e duração?

feroz

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.

Mark Meyer

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 whileloop simples em vez de um forloop 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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como encontrar IDs de usuário cuja hora local não está entre a hora de início e a hora de término de acordo com seu fuso horário?

php divide a hora de início e a hora de término com mesclar nova matriz

Consulta calculada SQL para hora de início e duração para encontrar hora de término

Como faço para lidar com a hora de início e de término do evento?

Como obter a hora de término com base na hora de início e intervalo selecionados?

Como comparar a hora de início e de término com a hora atual em php?

Como fazer regex de carimbo de data / hora com a hora de início e a hora de término?

Como verificar se uma "hora de início" não é posterior a "hora de término" em PHP

Durações de divisão definidas por carimbo de data e hora de início e término na hora

Hora de término de SQL como hora de início

Spark: calcula a hora de término do evento em intervalos de 30 minutos com base na hora de início e nos valores de duração nas linhas anteriores

Pandas: como analisar dados com carimbo de data e hora de início e término?

Retornar uma matriz de valores de carimbos de data / hora entre uma hora de início e uma hora de término

Como obter a data de término a partir da data de início, hora de início e hora de término no SQL

Consulta que converte uma hora de início e uma hora de término em registros de hora em hora

Hora de início e hora de término no JMeter Scheduler

Una duas linhas de entradas (hora de início e hora de término) como uma única linha no Talend

Criação de plano de tempo com base na hora de início e término e valor por hora

validação de entrada de tempo com hora de início e hora de término usando javascript

sql Selecione o valor máximo em uma combinação de hora de início e hora de término

hora de início e término de ontem em python com carimbo de data / hora

Tenho que validar o tempo para 1 hora. Os horários de início e término não devem ser maiores que 1 hora

Quero imprimir a hora de início, a hora de término e a execução total em R e anexar uma etiqueta a ela

Padrão cron com hora de início e término com minuto

Como obter o gráfico de Gantt usando matplotlib para tarefa com hora de início e hora de término até milissegundos

Como calculamos os tempos do período com base na entrada do usuário de hora de início e hora de término para o dia em angular?

Como combinar dois dataframes por hora de início e hora de término no pandas?

Como faço para atribuir IDs de grupo de uma tabela a linhas em outra com base nos horários de início e término?

Transforme várias linhas de eventos com carimbos de data / hora em um dataframe em uma única linha com data e hora de início e término