JavaScriptのDateのmonth(月)の罠
何故か月だけ0始まり
例えば2000年10月31日のDateを作りたいとき、こう書くと
var myBirthDay = new Date(2000, 10, 31);
実際にはこう出る
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(2000, 9, 31);
Mon Oct 31 2000 00:00:00 GMT+0900 (日本標準時)
無事に10月31日と出力された。
JSでnew DateするときやDateを使って日時を計算するときは月が0始まりなのを忘れずに。