var date = new Date(); //日期对象
    var now = "";
     now = date.getFullYear()+"-"; 
     now = now + (date.getMonth()+1)+"-";
     now = now + date.getDate();
     alert(now);如何能计算出下个月和下周日期
日期格式还是类似 2012-10-29

解决方案 »

  1.   

    http://hi.baidu.com/tangyw168/item/45447e08bde0aae3fe240dc1
      

  2.   

    网上搜了一段代码
    Date.prototype.dateAdd = function(interval,number)
    {
        var d = this;
        var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date'};
        var n={'q':3, 'w':7};
        eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')');
        return d;
    }输出有些问题,例如今天是 2012-10-31
    date.dateAdd('m',1)   结果是 2012-12-01 而不是2012-11-30
    各位,能否帮忙改试试,TKS
      

  3.   

        //日期增加函数
        function  dateAdd(s,  NumDay,  dtDate) {
            var  dtTmp  =  new  Date(dtDate);
            if  (isNaN(dtTmp))  dtTmp  =  new  Date();
            if(s=="w"){
                dtTmp=new  Date(Date.parse(dtTmp)  +  ((86400000  *  7)  *  NumDay));
            }else{
                dtTmp=new  Date(dtTmp.getFullYear(),dtTmp.getMonth() + NumDay,  dtTmp.getDate());
            }
            return dtTmp.getFullYear()+"-"+(dtTmp.getMonth() +1)+"-"+dtTmp.getDate()
        }
        var dtDate=new Date();//定义参考时间
        var nw=dateAdd("w",  1,  dtDate);
        var nm=dateAdd("m",  1,  dtDate);
        var nnm=dateAdd("m", 2,  dtDate);
        var nnnm=dateAdd("m", 3,  dtDate);
        alert("下个周日期:"+nw);
        alert("下个月日期:"+nm);
        alert("下下个月日期:"+nnm);
        alert("3个月后日期:"+nnnm);
      

  4.   

    这个输出还是一样的问题,dateAdd('m',1,'2012-10-31') 结果是 2012-12-01 而不是 2012-11-30
      

  5.   

    Date.prototype.dateAdd = function(interval,number)
    {
        var d = this;
        var day = d.getDate(); //原日期部分
        var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date'};
        var n={'q':3, 'w':7};
        eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')');
        if (d.getDate()!==day) d.setDate(0); //日期不等于原日期则跨月了,设成上月最后1日。
        return d;
    }
    var d = new Date('2012-10-31T00:00+08:00')
    alert(d.dateAdd('m',1))
    alert(d.dateAdd('m',-1))
      

  6.   

    额    //日期增加函数
        function  dateAdd(s,dtDate) {
            var  dtTmp  =  new  Date(dtDate);
            if  (isNaN(dtTmp))  dtTmp  =  new  Date();
            var m=dtTmp.getMonth();
            if(s=="w"){
                dtTmp=new  Date(Date.parse(dtTmp)  +  86400000  *  7);
            }else{
                dtTmp=new  Date(dtTmp.getFullYear(),dtTmp.getMonth() + 1,  dtTmp.getDate());
                if(dtTmp.getMonth()>m+1){
                    dtTmp=new  Date(dtTmp.getFullYear(),dtTmp.getMonth(), 0);
                }
            }
            return dtTmp.getFullYear()+"-"+(dtTmp.getMonth() +1)+"-"+dtTmp.getDate()
        }
        alert(dateAdd("w",new Date(2012,10-1,29))); //得出 2012-11-5
        alert(dateAdd("m",new Date(2012,10-1,31))); //得出 2012-11-30
        //注意传入的月份比实现小1【0-11】