JavaScript の setMonth でえらい目に

「××の表示がおかしいんですけど」
昨日まで普通に動いていたのに、今日になって突如動かなくなる(違う値が表示される)なんていわれて「まさかー」と思って動かしてみたら、あらま不思議。しっかりと値が変更されてますよ。
今月は October なので 10 と表示されなければならないにも関わらず、11 と出る。
昨日まではちゃんと10だったのに……なぜ?
スクリプトを見てみてもおかしなところはまるで無し(動いてたのだから当然)。


理由がまるでわからず、ちょっくらググって見たら、

Dateオブジェクトの罠
setYear,setMonthなどset系のメソッドを使ってはいけない。
小の月の月末が正しく取得されないor曜日が正しく取得されない等の
分かりにくいバグがあるからだ。正直、死ぬほどはまった。
もう直ってるかもしれないけど毎回newすることにしている。

なんてのを発見。そうだったのか……orz
まあ、本当にそうかわからないけど、月末でおかしくなったってことは可能性大。


とりあえず回避する方法を探すのも面倒なので JavaScript から PHP にスイッチ。
今のところ、ちゃんと動いてるようです。ふぅ〜。
午前中はこれにかかりっきりでした。


って、そういえば同じようなスクリプトで、setMonth 使ってるのがあったな。
そっちも手をつけなければならんのだが……。アウチ。