特定の日付に月数を追加して、新しい日付を計算したいと考えています。
例えば:
日付は「2012 年 6 月 30 日」(2012 年 6 月 30 日) で、月数は「2」または「3」か月です。
ここで、両方の値を取得し、指定された日付の 2 か月後の日付を返す関数が必要です。
これを達成する方法を教えてください。
特定の日付に月数を追加して、新しい日付を計算したいと考えています。
例えば:
日付は「2012 年 6 月 30 日」(2012 年 6 月 30 日) で、月数は「2」または「3」か月です。
ここで、両方の値を取得し、指定された日付の 2 か月後の日付を返す関数が必要です。
これを達成する方法を教えてください。
日付の加算/減算で必要なものがすべて含まれているこのコードを入れてみてください。
Date.prototype.add = function (sInterval, iNum){
      var dTemp = this;
      if (!sInterval || iNum == 0) return dTemp;
      switch (sInterval.toLowerCase()){
        case "ms":
          dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
          break;
        case "s":
          dTemp.setSeconds(dTemp.getSeconds() + iNum);
          break;
        case "mi":
          dTemp.setMinutes(dTemp.getMinutes() + iNum);
          break;
        case "h":
          dTemp.setHours(dTemp.getHours() + iNum);
          break;
        case "d":
          dTemp.setDate(dTemp.getDate() + iNum);
          break;
        case "mo":
          dTemp.setMonth(dTemp.getMonth() + iNum);
          break;
        case "y":
          dTemp.setFullYear(dTemp.getFullYear() + iNum);
          break;
      }
      return dTemp;
    }
    //sample usage
    var d = new Date();
    var d2 = d.add("d", 3); //+3days
    var d3 = d.add("h", -3); //-3hours
    var d4 = d.add("mo", 2); //+2 Months
    日が溢れる翌月に入りたいなら、
var d = new Date(2012, 6-1, 30);
d.setMonth(d.getMonth()+3);
新しい月に滞在したい場合は、日付を調整してから
var d = new Date(2012, 6-1, 30);
var add_months = 8
var d2 = new Date(Math.min(new Date(d.getYear(), d.getMonth()+add_months+1, 0),
              new Date(d.getYear(), d.getMonth()+add_months, d.getDate())))
    断片を解析して再構築します。
function addMonths(d, offset)
{
    return new Date(d.getFullYear(), d.getMonth()+offset, d.getDate());
}
var d = new Date();
console.log(d.toDateString());
// Thu Jun 28 2012
var twoMonthsFromNow = addMonths(d, 2);
console.log(twoMonthsFromNow.toDateString());
// Sun Aug 28 112