久しぶりに JavaScript の month にハマった。

2017.04.20 11:10

JavaScript new Date()

ノマドです。

とあるコンテンツにて JavaScript で取得した日付けの曜日がおかしいという不具合がありました。

不具合をさらに調べると、どうやら次月の日にちの曜日が今月の日にちの曜日に表示されてしまっている不具合でした。

JavaScript で月がひと月ずれるというのは、アレです。そうです getMonth() です。getMonth() は、0-11 の数値を返すので getMonth() + 1 をする必要があるのです。

しかし、今回は違いました。getMonth() じゃなくて new Date() でした。

JavaScript を普段から書いている方からすると、当然ですよというレベルかと思いますが、素人の私は知りませんでした。

new Date() で任意の日付けのオブジェクトを生成する際の引数のフォーマットで month の解釈が異なるということ。

具体的には、こんな感じです。

// カンマ区切りで日時を指定。
var date1 = new Date(2017, 1, 1, 0, 0);
console.log(date1);  // "Wed Feb 01 2017 00:00:00 GMT+0900 (JST)"

// 文字列で日時を指定。
var date2 = new Date(2017 + "/" + 1 + "/" + 1 + "/ " + 0 + ":" + 0);
console.log(date2);  // "Sun Jan 01 2017 00:00:00 GMT+0900 (JST)"

// カンマ区切りで日時を指定。(month は -1 する。)
var date3 = new Date(2017, 1 - 1, 1, 0, 0);
console.log(date3);  // "Sun Jan 01 2017 00:00:00 GMT+0900 (JST)"

ということで、new Date() の 引数によって month の値が変わるのです。

JavaScript の month 周りは、注意が必要ですね。

以上、ノマドでした〜。

  プログラミング Tech

  プログラム javascript date month

関連コンテンツ