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の日付処理は面倒でしかたがない