我如何获得一系列包含开始时间,结束时间和持续时间的时间?

问题描述 投票:0回答:1

我正在尝试一种基于开始时间,结束时间和持续时间(以分钟为单位)获取一系列时间的方法。

例如:开始时间:9结束时间:17持续时间:15

我成功地通过在开始和结束时间上进行循环来完成此操作,然后在该循​​环内进行了循环以计算分钟。

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/

问题在于,您最多只能输入60分钟的持续时间,因为它总是在小时内循环播放。

我需要的是无论长度有多少分钟都能够计算时间。例如,如果长度为120,则应从开始到结束每2小时显示一次。

javascript jquery
1个回答
0
投票

如果您以分钟为单位考虑所有内容,并在制作字符串时计算小时:分钟,这会容易一些。这将使您可以使用简单的while循环,而不是带有条件的复杂的for循环。然后,您可以将分钟数添加到开始时间,并在大于或等于结束时间时结束:

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))

如果持续时间超过上述第二个示例,则不包括结尾,因为这会增加与长度不同的持续时间。如果需要的话,再拖多一点时间将是一件简单的事情。

© www.soinside.com 2019 - 2024. All rights reserved.