08月と09月で意図しない結果になる

JavaScriptの動かないコード (初級編) parseIntで返り値が0になるエラー(主に言語とシステム開発に関して)の記事を見つけた。
Ruby On Railsで入力チェックに仕掛けてあったJava Scriptに問題が発生した。

<script	type="text/javascript">
<!--
window.onload =function(){
	Event.observe("rental_moving", "change", handler);
}
function handle_lending(e){
	var rental_moving = $F("rental_moving");
	var tmp = rental_moving.split("-");
	var conv = new Date(tmp[0], parseInt(tmp[1])-1, tmp[2]);
}
-->
</script>

rental_movingにはyyyy-mm-ddでデータが入っている。
最後の parseInt(tmp[1])だと08月と09月は「0」という結果になる。

2桁の0埋めだと,00から99までの中で,戻り値がおかしくなるのは08と09のケースだけ。
これは発見されにくい。

うん、発見するのに9月までかかった。8月は夏休みだったし。
 

// 数値に変換
	var num = parseInt( str, 10 );

まったくもってJavaScriptの日付処理は面倒でしかたがない