可能重复:
Workarounds for JavaScript parseInt octal bug的JavaScript parseInt函数给出了非常意外的结果
我解析字符串,检查它是否是一个日期,一个偶然的机会,我们现在发现,我的方法没有按8月份或9月份不适合日期。这是我做什么(输入是不是真的硬编码,很明显,但为了简洁...):
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 (!)
此问题出现了8,9月份和8楼和9每月 - 也就是说,"08"
或"09"
被解析为整数时,将返回0
而不是8
或9
。该代码同时适用于较低的(如"07"
)和更高(例如"10"
)整数(至少预期日期范围内...)
我在做什么错?
有趣的事实:第二个参数(“基数”)可以是从2到36的任何整数,允许使用ASCII字母和数字表示的许多神秘数字系统。 – Tomalak 2010-07-27 09:07:37
最后一句话+1。我通常懒得做的一步> _ <...它会让你免于如此多的头痛 – Warty 2010-07-27 09:36:54