【发布时间】:2011-03-21 12:01:18
【问题描述】:
我正在解析一个字符串以检查它是否是一个日期,偶然发现我的方法不适用于 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 或 @ 987654327@。该代码适用于较低(例如"07")和较高(例如"10")整数(至少在预期的日期范围内......)
我做错了什么?
【问题讨论】:
标签: javascript parseint