JavaScriptのDateオブジェクトについて

ハマった・・・、がっつりハマった・・・。

DateオブジェクトのgetMonth()という月をとるメソッドがあるんですが、0~11の値が返ってくるんです。
0が1月で、11が12月。見事計算を間違えまして、(getMonth()+1) を先に変数に代入して、そこから1ヶ月計算する式をつくったのです。それがバグでした。11月から12月にかかるとき、11+1=12 にならないので、何でかなーと思っていたら、11までだったので、0に戻ってしまうんですね。なので、変数に代入せず、出力の際に直接、(getMonth()+1) を使えば良かったんです。

間違ったコード

var date = new Date( today.getFullYear(), (today.getMonth() + 1), (today.getDate() + arg) );
return date.getFullYear() + '.' + date.getMonth() + '.' + date.getDate();

修正後

var date = new Date( today.getFullYear(), today.getMonth(), (today.getDate() + arg) );
return date.getFullYear() + '.' + (date.getMonth() + 1) + '.' + date.getDate();

んー、なかなかどうしてミスってしまった・・・。
うっかりさんなんだぜ!

カテゴリー: JavaScript   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>