Programador PHP freelance

Error en parseInt de Javascript

Existe un bug en la función parseInt de Javascript i Jscript (asp) que provoca que la función devuelva 0 para ciertos valores.

En concreto el error parece que tiene que ver con la interpretación del primer carácter cuando este es 0 ya que se interpreta que lo que sigue es en base octal y para aquellos números que no tienen representación en octal se devuelve erróneamente 0.

Pongo un ejemplo:
parseInt(’07’) -> devolverá 7
parseInt(’08’) -> devolverá 0
parseInt(’09’) -> devolverá 0
parseInt(’10’) -> devolverá 10

Imaginaros los estropicios que puede provocar esto en la conversión de cadenas a fechas, caso donde me he encontrado el error. En concreto el día ’08/07/2008′ que yo interpreto como 8 de Julio de 2008, el javascript me lo daba como 30 de Julio de 2008 al devolver cero la llamada parseInt(’08’)

Para solucionarlo hay que decirle a parseInt que trabaje en base 10 y el bug desaparece inmediatamente.

parseInt(’08’, 10) devuelve el resultado esperado.