在网上找到的函数,是可以比较时间,但不是我想要的效果:
我要判断的是小时差,不要理会分秒举例:我从网上找到的PHP DateDiff函数
function DateDiff($part, $begin, $end)
{
$diff = strtotime($end) - strtotime($begin);
switch($part)
{
case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break;
case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break;
case "d": $retval = bcdiv($diff, (60 * 60 * 24)); break;
case "h": $retval = bcdiv($diff, (60 * 60)); break;
case "n": $retval = bcdiv($diff, 60); break;
case "s": $retval = $diff; break;
}
return $retval;
}用法:
DateDiff(h,"2010-04-29 16:11:20","2010-04-29 17:10:20")
这样出来的结果还是0,一定要后面那个日期的分秒数也超过前面的,才会显示为1我想要的效果是,不理会分秒数,只要小时17大于16,结果就为1,请问要怎么办呢?

解决方案 »

  1.   

    date('H',$time()-$之前时间戳);//这样就可以了
      

  2.   


    date('H',date('YmdH',$time)-date('YmdH',$以前时间));// 这样可以吧,笨方法一个
      

  3.   

    你那个函数没有错。
    DateDiff(h,"2010-04-29 16:11:20","2010-04-29 17:10:20")
    两者的时间差本身就不到1小时。
    DateDiff(h,"2010-04-29 15:11:20","2010-04-29 17:10:20")
    这样就是返回的就是1了。
    如果你想把小数进位,不到1小时也算成1小时。
    case "h": $retval = ceil(bcdiv($diff, (60 * 60), 1)); break;
    或者你想取到小数:
    case "h": $retval = bcdiv($diff, (60 * 60),1); break;
    后面加的1表示小数位数。
      

  4.   


    $a="2010-04-29 17:10:20";
    $b="2010-04-29 15:11:20";
    function time_min($a,$b)
    {
    $a_arry=explode(" ",$a);
    $a_arry2=explode(":",$a_arry[count($a_arry)-1]); //a的時間. $b_arry=explode(" ",$b);
    $b_arry2=explode(":",$b_arry[count($b_arry)-1]);
    return $a_arry2[0]-$b_arry2[0];
    }
    echo time_min($a,$b);给分谢谢.
      

  5.   


    $a="2010-04-29 17:10:20";
    $b="2010-04-29 15:11:20";
    echo date("H",strtotime($a))-date("H",strtotime($b));
      

  6.   


    $start = "2010-04-29 16:11:20";
    $end = "2010-04-29 17:10:20";
    $timetamp = strtotime(date("Y-m-d H:00:00",strtotime($end)))-strtotime(date("Y-m-d H:00:00",strtotime($start)));
    echo date("g",$timetamp);//1
      

  7.   

    修正下 可以计算跨天跨年的function countHour($start, $end){
       $timetamp = strtotime(date("Y-m-d H:00:00",strtotime($end)))-strtotime(date("Y-m-d H:00:00",strtotime($start)));
       echo $timetamp/3600; 
    }
    $start = "2010-04-29 16:11:20";
    $end = "2010-04-29 17:10:20";//2010-04-30 17:10:20
    countHour($start, $end)
      

  8.   


    解决!你的最历害,呵呵
    不过你那个echo把我给搞死了,呵呵,我写这样的时候if(countHour($start, $end)>0)程序不正常,后来才发现echo应换成return