知らないととことんハマりそうなので、備忘録としてまとめ。
日付オブジェクトから月を取り出すときの注意点についてです。
サンプルコードはこちら。
var today = new Date(); var month = today.getMonth() + 1;
現在の月を取得するならこれだけなのですが、getMonth()メソッドを使ったときの返り値は 0~11 となります。
つまり、「0 = 1月」、「11 = 12月」なんです。
なので、コードにあるように、getMonth()返ってきた値に +1 をする必要があります。
…知らないとここでかなりハマりそうです。
なお、例によって後輩がこの状況に陥り、「今6月なのに、先月の日付が返ってくる!」と悩んでいました。
日付を console.log で出力すると正常で、でも月を取得すると5月だったということだったので、この現象を思い出せました。
以上、getMonth()メソッドを使うときの注意点でした。
…正直、「getMonth()」という名前なので、きっちり 1~12の間で値が返ってきてほしいですね。
もしJavaScriptで日付を扱う時に、値がおかしい場合は、まずこのあたりを疑ってみてください。
誰かの参考になれば幸いです。