学んだことのログ

プログラミングとかものを作るのが好きです

JavaScriptのDateのmonth(月)の罠

何故か月だけ0始まり

例えば2000年10月31日のDateを作りたいとき、こう書くと

var myBirthDay = new Date(20001031);

実際にはこう出る

Thu Nov 31 2000 00:00:00 GMT+0900 (日本標準時)

2000年11月31日

年と日はちゃんと入力したとおりだが、月だけ+1されている

理由

月は0始まりだから。

0,1,2,3,4,5,6,7,8,9,10,11…という感じで0から数字を数えると10番目は11になる。

そのため10と入力しても実際は0始まりの10番目の11月が出力される。

なので、10月のDateをnewしたいときはこう書く。

var myBirthDay = new Date(2000931);

Mon Oct 31 2000 00:00:00 GMT+0900 (日本標準時)

無事に10月31日と出力された。

JSでnew DateするときやDateを使って日時を計算するときは月が0始まりなのを忘れずに。