不是我写的.
function  DateDiff($d1,$d2=""){  
             if(is_string($d1))$d1=strtotime($d1);  
             if(is_string($d2))$d2=strtotime($d2);  
             return  ($d2-$d1)/86400;  
 }  
 echo  DateDiff("2002-03-27","2001-09-27")."<br>";  
 echo  DateDiff("2002-03-27")."<br>";  
   
 function  DateAdd($n,$d=""){  
             if(is_string($d))$d=strtotime($d);  
             return  Date("Y-m-d",$d+$n*86400);  
 }  
 echo  DateAdd(10,"2001-09-27")."<br>";  
 echo  DateAdd(-10)."<br>";

解决方案 »

  1.   

    $a="2003-8-6";
    $b="2005-6-8";
    $m=strtotime($b)-strtotime($a);
    echo ceil($m/(24*3600));
      

  2.   

    $a="2003-8-6";
    $b="2005-6-8";
    $m=strtotime($b)-strtotime($a);
    echo "$a 到 $b 共有".ceil(abs($m)/(24*3600))."天".;
      

  3.   

    $a="2003-8-6";
    $b="2005-6-8";
    $time=mktime(0,0,0,substr($a,5,1),substr($a,7,1),substr($a,0,4);
    $time-=mktime(0,0,0,substr($b,5,1),substr($b,7,1),substr($b,0,4);
    echo abs($time/84400);
      

  4.   

    <?$a="1899-12-30";
    $b="2003-08-11";
    $m=strtotime($b)-strtotime($a);
    echo ceil(abs($m)/(24*3600));
    ?>
    结果是12275,不对啊,哪儿的问题?
      

  5.   

    $d1='2003-03-05 12:00';
    $d2='2003-03-07';echo(ceil((strtotime($d2)-strtotime($d1))/(24*60*60)));
      

  6.   

    是的,计时是从格林威治时间1970-01-01开始的,我们的时间是1970-01-01 08:00:00,之前的时间都为-1。上述各兄弟都写出了解法。两种方法都可行。
    其中zalvsa兄的mktime()函数少了右括号。