JavaScript 中的时间范围为 30 分钟(或 20 分钟)

Ter*_*tos -3 javascript time date range

我需要计算两个小时 JavaScript 之间的范围,例如:

var calculeHor = 30; // or 20, or 15, or 10...
var horIni = "8:30";
var horEnd = "13:00";
Run Code Online (Sandbox Code Playgroud)

结果是:

var range = [
    {08:30 - 09:00}, 
    {09:00 - 09:30}, 
    {09:30 - 10:00}, 
    {10:00 - 10:30}, 
    {10:30 - 11:00}, 
    {11:00 - 11:30}, 
    {11:30 - 12:00}, 
    {12:00 - 12:30}, 
    {12:30 - 13:00}
];
Run Code Online (Sandbox Code Playgroud)

isv*_*all 5

尝试一下:

function time(start, end, interval) {
    let s = start.split(':').map(e => +e);
    let e = end.split(':').map(e => +e);
    let res = [];
    let h_prev = s[0];
    let m_prev = s[1];

    while (h_prev < e[0] || m_prev < e[1]) {
        s[1] += interval;
        if (s[1] > 59) {
            s[0] += 1;
            s[1] %= 60;
        }
        if (s[0] < e[0] || s[1] <= e[1])
            res.push(h_prev + ':' + (m_prev < 10 ? '0' + m_prev : m_prev) + " - " + s[0] + ':' + (s[1] < 10 ? '0' + s[1] : s[1]));

        h_prev = s[0];
        m_prev = s[1];

        if (h_prev == e[0] && e[1] - m_prev < interval) break;

    }
    return res;
}

console.log(time('8:30', '13:00', 30));
console.log(time('23:00', '23:30', 30));
console.log(time('23:00', '23:31', 30));
Run Code Online (Sandbox Code Playgroud)