2013-03-20 88 views
0

從9點到10點無法弄清楚這一切是否正確,但是這一切都不起作用。 10:00之後它跳轉到11:15,然後12:30javascript在循環中添加分鐘

我簡單地增加分鐘的日期/時間以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()); 
+0

你可以發佈'pad'函數嗎? – bcoughlan 2013-03-20 12:11:14

回答

3

安東尼得到了實際的問題在我面前......

第5次迭代後,您將分鐘設置爲75(即, 5 * 15 = 75),這是1小時15分鐘,這就是爲什麼10:00之後的下一個 值變爲11:15 - 安東尼福爾尼

此代碼應該正確設置時間。

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; 
} 
+0

太棒了,是的,解決了它,非常感謝安東尼,約翰。 – crankshaft 2013-03-20 12:29:29

+0

沒問題。我實際上會期待你所期待的同樣的行爲,並因此會遇到同樣的問題,所以我很高興這個問題讓我想起了它,有可能在一段時間內挽救我,希望其他人。 – jonhopkins 2013-03-20 12:34:39

2

問題出在now.setMinutes(i*15);代碼行內。第五迭代後,您正在設置分鐘成爲75(即5 * 15 = 75),這是一個1 hour and 15 minutes這就是爲什麼10:00之後的下一個值變爲11:15