Javascript计算错误

时间:2012-01-22 17:01:31

标签: 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   ???????

我做错了什么?

2 个答案:

答案 0 :(得分:4)

始终包含基数:

parseInt(SplitString[0], 10)

没有它,"08"将在八进制基础中解析,8是无效数字。

另请参阅:parseInt at MDN

答案 1 :(得分:2)

问题是前导零表示八进制表示法。使用以下代码段:

parseInt(SplitString[0], 10)

这会强制JavaScript将数字视为十进制数。