问题是这样的
一个台球厅 结账时的算法
已知条件,开台时间例如9:16,分时段价格分为三个时段每小时价格 
00:00-12:00 6元
12:00-17:00 8元
17:00-24:00 12元最小计费时间为10分钟 ,也就是说 12元一小时 每10分钟为1.2元 这10分钟不足5分钟 不计算费用
超过5分钟不到10分钟 按10分钟计费请给出一个php的算法
例如 开始时间 9:16 结束时间 第二天早上2点05结账
请给出一个算法
满意的加 200分大家踊跃参与。谢谢

解决方案 »

  1.   

    date_default_timezone_set ('Asia/Shanghai');
    $h = date("H"); 
    $i = date("i"); 
    $value=0;
    if(0<$h<12)
    {
    $value=$h*6
    if($i>5)
    {
    $value+=($i/60)*6;
    }
    }
    }
      

  2.   

    //结账算法
    function check($start=null,$end=null,$newprice=null,$cost=0,$discount=1)
    {
    $discounts=$discount;
    foreach($newprice as $sprice)
    {
    if($sprice['Timeprice']['member_discount']==0)
    {
    $discounts=1;
    }
    if($start>=$sprice['Timeprice']['from_time']&&$start<$sprice['Timeprice']['to_time'])
    {
    if($end>$start&&$end<$sprice['Timeprice']['to_time'])
    {
    $cost=$cost+($end-$start)/10*$sprice['Timeprice']['price']*$discounts;
    }
    else
    {
    $cost=$cost+($sprice['Timeprice']['to_time']-$start)/10*$sprice['Timeprice']['price']*$discount;
    if($sprice['Timeprice']['to_time']==1440)
    $sprice['Timeprice']['to_time']=0;
    $cost=$this->check($sprice['Timeprice']['to_time'],$end,$newprice,$cost,$discount);
    break;
    }
    }
    }
    return $cost;
    }算法给出来了 大家看看吧 哎 怎么给分呢