2012-01-22 166 views
1

我做了以下函數來獲取時間字符串的秒數。Javascript計算錯誤

function TimeStringToSeconds(TimeString){ 
    var TotalTime = 0; 
    var SplitString = TimeString.toString().split(':'); 
    TotalTime += parseInt(SplitString[0])*3600; 
    TotalTime += parseInt(SplitString[1])*60; 
    TotalTime += parseInt(SplitString[2]); 
    return TotalTime; 
} 

它的工作原理,但如果輸入包含8或9,例如:

TimeStringToSeconds('00:01:00'); // Outputs 60 
TimeStringToSeconds('00:02:00'); // Outputs 120 
TimeStringToSeconds('00:08:00'); // Outputs 0 ??????? 

我到底做錯了什麼?

+4

我聞到八進制:) –

回答

4

始終包括基數:

parseInt(SplitString[0], 10) 

沒有它,"08"被解析以八進制的基礎上,與8是無效的數字。

參見:parseInt at MDN

+0

謝謝,這個作品! – alpjef

2

的問題是,一個前導零表示八進制。使用以下代碼片段:

parseInt(SplitString[0], 10) 

這會強制JavaScript將數字視爲小數。