function dateRange($d1,$d2)
{
$timestamp1=strtotime($d1);
$timestamp2=strtotime($d2);
if($timestamp1==$timestamp2) return;
if($timestamp1>$timestamp2) return '日期错误';
$n=round(($timestamp2-$timestamp1)/3600/24);
$y=date('Y',$timestamp1);
$m=date('m',$timestamp1);
$d=date('d',$timestamp1);
$arr=array();
for($i=0;$i<$n+1;$i++)
{
$arr[]=date('Y-m-d',mktime(0,0,0,$m,$d+$i,$y));
}
return $arr;
}
print_r(dateRange('2005-11-12','2006-01-12'));

解决方案 »

  1.   


    $startDate = '2005-11-12';
    $endDate   = $startDate ;
    while($endDate != '2006-01-12')
    {
    echo $endDate.'<br/>';
    $endDate = date('Y-m-d',strtotime($endDate.' +1 day'));
    }
    echo $endDate.'<br/>';
      

  2.   


    function listD($start, $end){
        if (!$start || !$end || ($start = strtotime($start))>($end = strtotime($end)))return false;    $str = array(date('Y-m-d', $start));
        $one = 60*60*24;
        while($start < $end){
            $str[] = date('Y-m-d', $start+=$one);
        }
        return $str;
    }print_r( listD('2005-11-12', '2006-01-12') );
      

  3.   

    用time stamp
    最简单,每次增加一天 3600*24