JavaScriptで来月の今日を計算します.

784 ワード

もっと読む
 
     製品の要求が特殊なので、自分でカレンダーを作りました.2014.0.31日に発見され、来月の今日を計算する時に問題が発生しました.問題のあるコードは以下の通りです.
 
var today = new Date();
today.setMonth(today.getMonth() + 1);
var nextMonthToday = today;
 
nextMonthToday   Mon Dec 01 2014 22:33:03 GMT+0800 (      )
 
 
     なぜなら、today.set Monthの実行中の+1は、実際には当月の日数で計算されているからです.
     todayのunixタイムスタンプに31日間プラスされたので、12月1日です.
 
     解決策:
var date = today.getDate(); //      
 today.setDate(1); //     1 
 today.setMonth(today.getMonth() + n); //n    1 
 today.setDate(Math.min(date, getDaysInMonth(today))); // getDaysInMonth(today)     n       , 10 31          11 30