0

9:00から10:00まではすべて正しいので、これを理解することはできませんが、それではすべてがうまくいきません。10:00以降は11:15にジャンプし、次に12:30にジャンプします

日付/時刻に分を追加して15分間隔で配列をインクリメントしているだけですが、追加できるのは最大60分だけですか?

function pad(val,max) { 
        var str = val.toString(); 
        return str.length < max ? pad("0" + str, max) : str;
}

function cboHrs(){
    var now = new Date(); 
    now.setHours(9);
    var hrs = [];
    for (var i=1;i<36;i++){
        var hr = {}; 
        now.setMinutes(i*15);
        hr.txt = pad(now.getHours(),2) +':'+pad(now.getMinutes(),2);
        hr.val = hr.txt; 
        hrs.push(hr);
        }
    return hrs;
}
console.log(cboHrs());
4

2 に答える 2

3

アンソニーは私の前で実際の問題に直面しました...

5回目の反復の後、分を75(つまり、5 * 15 = 75)に設定します。これは1時間15分であるため、10:00以降の次の値は11:15になります-Anthony Forloney

このコードは、時間を正しく設定するために機能するはずです。

function cboHrs(){
    var now = new Date(); 
    var hrs = [];
    for (var i=1;i<36;i++){
        var hr = {};
        // add another hour every 4th iteration
        now.setHours(9 + parseInt(i / 4));
        // add 15 minutes every iteration, starting back at 0 on the 4th
        now.setMinutes((i % 4) * 15);
        hr.txt = pad(now.getHours(),2) +':'+pad(now.getMinutes(),2);
        hr.val = hr.txt; 
        hrs.push(hr);
        }
    return hrs;
}
于 2013-03-20T12:19:22.087 に答える
2

問題はnow.setMinutes(i*15);コード行にあります。5回目の反復の後、分を75(つまり5 * 15 = 75)になるように設定します。1 hour and 15 minutesこれが、次の値がに10:00なる理由です。11:15

于 2013-03-20T12:18:19.157 に答える