2013-06-30 85 views
3
function TimeConvert(num) { 
    for (i = 0; i < num; i+= 60) { 
     if (num % 60 < 60) { 
      var hours = Math.floor(i/60); 
      if (hours == 0) { 
       var minutes = num % 60; 
      } else { 
       minutes = num % (60 * hours); 
      } 
     } 
    } 
    return hours + ":" + minutes; 
} 

當我打電話TimeConvert(60),它返回的0:0代替1:0 ...爲什麼?在這種情況下,我是否需要添加一個條件來檢查num % 60 == 0的Javascript:Math.floor工作不正常

+0

你有沒有試着用調試器跟蹤代碼? –

+2

'num%60 <60'總是滿足如果'num'是數字和有限的 –

+0

是的,它工作時,我呼叫TimeConvert(126)例如,它返回2:6。但是當我調用TimeConvert(120)時,它返回1:0而不是2:0。 – bard

回答

3

問題出在i < num而應該是i <= num。 您的for僅與i=0一起執行一次,因爲在下一步i獲得+60且i < num變爲false。

而且,不管怎麼說,全功能應該只是:

function TimeConvert(num) { 
    var hours = Math.floor(num/60); 
    var minutes = num % 60; 
    return hours + ":" + minutes; 
} 
5

爲什麼你會需要遍歷?

function TimeConvert(num) { 
    var hours = Math.floor(num/60); 
    var minutes = num % 60; 
    //minutes = minutes < 10 ? '0'+minutes:minutes 
    return hours + ":" + minutes; 
} 

FIDDLE

+0

IIUC,OP不想將分鐘格式化爲兩位數字 –

+0

@JanDvorak - 然後刪除該行! – adeneo

+0

這工作完美,謝謝!你是對的,我必須不斷思考迭代的問題。 – bard