for ($year=2005, $month=1; ; $year++, $month++) {
    if (($year == 2006) && ($month > 8)) {
        break;
    } else {
        echo $year . "-" . lpad($month, 2, '0');
    }
}

解决方案 »

  1.   

    $start_month = "2005-01";
    $end_month = "2006-08";
    $syear=intval(substr($start_month,0,4));
    $eyear=intval(substr($end_month,0,4));
    $smonth=intval(substr($start_month,5,2));
    $emonth=intval(substr($end_month,5,2));
    while(($syear<$eyear)||(($syear==$eyear)&&($smonth<$emonth-1))){
    $smonth++;
    echo $syear."-".$smonth."<br>";
    if($smonth/12==1){
    $smonth=0;
    $syear++;
    }
    }
      

  2.   

    to:aminconiecho $year . "-" . lpad($month, 2, '0');lpad是什么函数?
      

  3.   

    $start_month = "2005-01";
    $end_month = "2006-08";
    $i=(int)substr($start_month,-2);//开始月份,1为一月开始
    $j=(int)substr($start_month,2,3);//开始年份,0位2000年开始
    $month = '';
    while( $month!= $end_month ){
    $month = '2'.sprintf('%03d',$j).'-'.sprintf('%02d',$i);
    $i++;
    if( $i>12 ){
    $i=1;
    $j++;
    }
    echo $month;
    }
      

  4.   

    测试通过:<?php
    $start_month = "2005-01";
    $start_date=getdate(strtotime($start_month));
    $end_month = "2006-08";
    $end=strtotime($end_month."-01");
    $m=1;
    do{
       $next=mktime(0, 0, 0, $start_date['mon']+$m, 1, $start_date['year']);
       echo date("Y-m",$next).'<br/>';
       $m++;
    }while($next<$end);
    ?>
      

  5.   

    getdate(strtotime($start_month));============================================
    修改如下:
    getdate(strtotime($start_month . '-01'));否则得到的日期不正确
      

  6.   

    function getMonthNum( $date1, $date2, $tags='-' ){
     $date1 = explode($tags,$date1);
     $date2 = explode($tags,$date2);
     return abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);
    }#调用:
    #可以不用管日期的先后顺序,函数里面日期相减取了绝对值
    $date1 = "2003-05";
    $date2 = "2008-11";
    $monthNum = getMonthNum( $date1, $date2 );
    echo $monthNum;