Mögliches Duplikat:
Workarounds für JavaScript parseInt octal bug
Ich analysiere eine Zeichenkette, um zu prüfen, ob es sich um ein Datum handelt, und durch Zufall haben wir jetzt entdeckt, dass meine Methode nicht für Daten im August oder September funktioniert. Ich mache Folgendes (die Eingabe ist nicht wirklich natürlich hart kodiert, aber der Kürze halber...):
var str = '2010-08-26 14:53';
var data = str.split(' '); // ['2010-08-26', '14:53']
var date = data[0].split('-'); // ['2010', '08', '26]
var time = data[1].split(':'); // ['14', '53']
var yyyy = parseInt(date[0]); // 2010
// THIS IS WHERE STRANGE THINGS HAPPEN:
var MM = parseInt(date[1]); // 0 - not 08 or 8, as expected!
console.log(date[1]); // prints "08" (with quotes)
console.log(date[1].toString()); // prints 08 (no quotes)
console.log(parseInt(date[1].toString())); // prints 0 (!)
Dieses Problem tritt im August und September sowie am 8. und 9. eines jeden Monats auf, d. h. wenn entweder "08"
o "09"
wird in eine Ganzzahl geparst, 0
wird zurückgegeben anstelle von 8
o 9
. Der Code funktioniert sowohl für niedrigere (z. B. "07"
) und höher (z. B. "10"
) Ganzzahlen (zumindest innerhalb der erwarteten Datumsbereiche...)
Was mache ich falsch?