Tom*_*han 2 javascript parseint
我正在解析一个字符串以检查它是否是一个日期,我们现在发现我的方法不适用于八月或九月的日期.这就是我所做的(显然,输入并不是真正的硬编码,但为了简洁起见......):
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 (!)
Run Code Online (Sandbox Code Playgroud)
这个问题出现了8,9月份和8楼和9月的每-也就是说,在任"08"
或"09"
被解析为整数,0
则返回,而不是8
或9
.该代码适用于较低(例如"07"
)和较高(例如"10"
)整数(至少在预期日期范围内......)
我究竟做错了什么?
使用
parseInt(date[1], 10)
Run Code Online (Sandbox Code Playgroud)
确保字符串被解释为基数10(十进制).
否则,如果以它开头"0"
,则将其解释为基数8(八进制),如果以它开头,则将其解释为基数16(十六进制)"0x"
.
实际上,您应该始终包含基本参数以避免这些类型的错误.
归档时间: |
|
查看次数: |
2627 次 |
最近记录: |