重複の可能性:
JavaScriptparseIntの8進数バグの回避策
文字列を解析して日付かどうかを確認していますが、偶然にも、このメソッドが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
の代わりに返されます。このコードは、より低い( eg)整数とより高い(eg )整数の両方で機能します(少なくとも予想される日付範囲内で...)8
9
"07"
"10"
私は何が間違っているのですか?