开始时间:2011-08-18
结束时间:2012-08-17
以每个月的25号、间隔1个月,然后把开始时间和结束时间进行分割。最终分割为:
2011-08-18  2011-08-25
2011-08-26  2011-09-25
2011-09-26  2011-10-25
……还有谁写过这样的方法,传递开始时间、结束时间、时间间隔、间隔日

解决方案 »

  1.   

    是这种么function GetDateDiff(startTime, endTime, diffType) {
                //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
                startTime = startTime.replace(/\-/g, "/");
                endTime = endTime.replace(/\-/g, "/");
                //将计算间隔类性字符转换为小写     
                diffType = diffType.toLowerCase();
                var sTime = new Date(startTime); //开始时间1    
                var eTime = new Date(endTime);  //结束时间
                //作为除数的数字
                var divNum = 1;
                switch (diffType) {
                    case "second":
                        divNum = 1000;
                        break;
                    case "minute":
                        divNum = 1000 * 60;
                        break;
                    case "hour":
                        divNum = 1000 * 3600;
                        break;
                    case "day":
                        divNum = 1000 * 3600 * 24;
                        break;
                    default:
                        break;
                }
                return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));
            }
      

  2.   

    返回数组,数组的内容为arr=[
    "2011-08-18","2011-08-25",
    "2011-08-26","2011-09-25",
    "2011-09-26","2011-10-25",
    "2011-10-26","2011-11-25",
    "2011-11-26","2011-12-25",
    "2011-12-26","2012-01-25",
    "2012-01-26","2012-02-25",
    "2012-02-26","2012-03-25",
    "2012-03-26","2012-04-25",
    "2012-04-26","2012-05-25",
    "2012-05-26","2012-06-25",
    "2012-06-26","2012-07-25",
    "2012-08-26","2012-08-17"]
      

  3.   

    不知道你说的什么,但是可以偷个巧。。可以引入一个js日期插件,那么你就能很好的借助日期控件的api了。。突然想到的。:-D
      

  4.   

    有时间写了一个,但不是很完善,楼主可以自己再完善一下function GetDateDiff(startTime,endTime)
    {
        startTime = startTime.replace(/\-/g, "/");
        endTime = endTime.replace(/\-/g, "/");
        var sTime = new Date(startTime);
        var eTime = new Date(endTime);
        var divNum = 1000 * 3600 * 24;
        return parseInt((eTime.getTime()-sTime.getTime())/parseInt(divNum));
    }function returnMonth(num)
    {
        var str="";
        switch(num)
        {       
            case 0:str="01";break;
            case 1:str="02";break;
            case 2:str="03";break;
            case 3:str="04";break;
            case 4:str="05";break;
            case 5:str="06";break;
            case 6:str="07";break;
            case 7:str="08";break;
            case 8:str="09";break;
            case 9:str="10";break;
            case 10:str="11";break;
            case 11:str="12";break;
        }       
        return str;
    }function addMonth(sDate,num)
    {
        var aYmd=sDate.split('-');
        var dt=new Date(aYmd[0],aYmd[1],aYmd[2]);
        dt.setMonth(dt.getMonth()+num);
        var y=dt.getFullYear();
        var m=returnMonth(dt.getMonth());
        var d=dt.getDate();
        if(d<10) d='0'+d;
        
        return y+'-'+m+'-'+d;
    }function DateNextDay(d2)
    {
        var str=d2.slice(5)+"-"+d2.slice(0,4);
        var d=new Date(str);     
        var d3=new Date(d.getFullYear(),d.getMonth(),d.getDate()+1);
        var month=returnMonth(d3.getMonth());     
        var day=d3.getDate();
        day=day<10? "0"+day:day;       
        var str2=d3.getFullYear()+"-"+month+"-"+day;
        return str2;
    }function GetDateArr(begin_date,end_date,months,dt)
    {
        var i=0;
        var a=new Array();
        var tempdt=begin_date;
        while(GetDateDiff(tempdt,end_date)>=0)
        {
            var tempdtsplit=tempdt.split('-');
            var dt1=tempdtsplit[0]+'-'+tempdtsplit[1]+'-'+tempdtsplit[2];
            var dt2=tempdtsplit[0]+'-'+tempdtsplit[1]+'-'+dt;
            if (GetDateDiff(dt1,dt2)<0)
            {
                dt2=addMonth(dt2,months-1);
            }
            if (GetDateDiff(dt2,end_date)>=0)
            {
                a[i]=new Array(tempdt,dt2,dt2);
            }
            else
            {
                a[i]=new Array(tempdt,end_date,end_date);
            }
            tempdt=DateNextDay(dt2);
            i++;
        }
        return a;
    }alert(GetDateArr('2011-08-18','2012-08-17',1,'25'));