Javascript计算不正确

时间:2013-01-10 07:30:11

标签: javascript

我的javascript中有一个奇怪的问题,请看下面的代码:

dateParts = document.getElementById('date').value.split('/');
newDays = 14;
year = dateParts[2];
month = parseInt(dateParts[1]) - 1;
day = parseInt(dateParts[0]) + parseInt(newDays);
alert(dateParts[0]+" + "+newDays+" = "+day);

并假设document.getElementById('date') = 07/01/2013

计算将给出正确的结果= 07 + 14 = 21

08/01/2013 / 09/01/2013

外,所有日期的计算工作正常

结果是08 + 14 = 14,这里有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您的号码被视为八进制,因为您未在parseInt()内使用radix。您需要像这样调整parseInt()

month = parseInt(dateParts[1], 10) - 1;
day = parseInt(dateParts[0], 10) + parseInt(newDays, 10);

答案 1 :(得分:2)

008中的前导09导致JavaScript假设该数字为八进制。由于这些值不是有效的八进制值,因此将它们视为0.有关详细信息,请参阅this question

调用parseInt时应始终使用基数来避免此问题。

答案 2 :(得分:1)

函数是parseInt(str,redix),如果parseInt中的值以0开头,则假设基数为8,因此'09','08'无效且函数返回0.您需要调用像parseInt('08',10)这样的函数来获得正确的值。