我正在解析一个字符串来检查它是否是一个日期,偶然发现我的方法不适用于 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"
or"09"
被解析为整数时,0
返回而不是8
or 9
。该代码适用于较低(例如"07"
)和较高(例如"10"
)整数(至少在预期日期范围内......)
我究竟做错了什么?