球场分时段计费算法

球场分时段计费算法   

1.输入数据   开始结束时间

2.变量(时间段,单价,初始价,封顶价)

3.思路 :(1).传入开始结束时间,提取必要的对比信息(开始结束小时,时间戳,经过时长)。(2.)根据时间创建1-2的数组。(2.循环时间数组,调用不同时间段的计价方法)

不废话,直接贴贴代码


    
    public $stime = "2018-08-04 23:41:00";//开始时间
    public $etime = "2018-08-05 19:55:00";//结束时间
    
    public $h1=6; //第一时段结束 第二时段开始的小时
    public $h2=12;//第二时段结束 第三时段开始的小时
    public $h3=18;//第三时段结束 第四时段开始的小时
    
    public $b_price=10; //起步价1
    
    public $price1=0.1;   // 第一时段价格
    public $price2=0.2;   // 第二时段价格
    public $price3=0.3;   // 第三时段价格
    public $price4=0.5;   // 第四时段价格
    
    public $top1=22;     //封顶价1
    public $top2=25;     //封顶价2
    public $top3=28;     //封顶价3
    public $top4=32;     //封顶价4
    
    
    public $sum=0;//总价
    
    public $sum1=0;//第1时段价格
    public $sum2=0;//第2时段价格
    public $sum3=0;//第3时段价格
    public $sum4=0;//第4时段价格
    
    public $sum2_1=0;//第2-1时段价格
    public $sum2_2=0;//第2-2时段价格
    public $sum2_3=0;//第2-3时段价格
    public $sum2_4=0;//第2-4时段价格
      
    /**
     * 球场计价算法
     * @param 开始 结束时间
     * @return string  消费金额,消费时段,消费明细
     */
    //http://localhost/baoxian/home/sum/test/stime/2018-08-04%2001:00:00/etime/2018-08-06%2001:15:05
    public function test()
    {
        //$stime=$_GET['stime'];//开始时间
        //$etime=$_GET['etime'];//结束时间
    /*     public $stime = "2018-08-04 03:02:00";//开始时间
        public $etime = "2018-08-04 06:03:05";//结束时间 */
        
        $sth=(int)substr($this->stime,11,2);//开始的小时
        $stm=(int)substr($this->stime,14,2);//开始的分钟
        $eth=(int)substr($this->etime,11,2);//结束的小时
        $etm=(int)substr($this->etime,14,2);//结束的分钟
        
        $st_00=strtotime(substr($this->stime,0,10));//开始日期 时间000   判断是否跨天
        $st=strtotime($this->stime);//转时间戳
        $et=strtotime($this->etime);
        $et_st_00=$et - $st_00;//经过时长  0点开始(秒)
        $et_st=$et - $st;//经过时长 不是 0点开始(秒)
        
        
        
        
        //将时间分段    跨天用2天的数组
        if($et_st_00 <= 86400)
        {
            $time_arr=  array(0,$this->h1,$this->h2,$this->h3,24);//默认时段数组
        }
        else
        {
            $time_arr=  array(0,$this->h1,$this->h2,$this->h3,24,24+$this->h1,24+$this->h2,24+$this->h3,48);//默认时段数组
        }
        
        //从开始世时间 左侧开始截取
        if($sth >= 0 && $sth < $this->h1)
        {
            array_splice($time_arr, 0, 1, $sth);
        }
        else if($sth >= $this->h1 && $sth < $this->h2)
        {
            array_splice($time_arr, 0, 2, $sth);
        }
        else if($sth >= $this->h2 && $sth < $this->h3)
        {
            array_splice($time_arr, 0, 3, $sth);
        }
        else if($sth >= $this->h3 && $sth < 24)
        {
            array_splice($time_arr, 0, 4, $sth);
        }
    
        //dump($et_st_00>86400?$eth+24:$eth);
        //从结束时间  右侧开始截取  结束时间不能=设置的时间点
        if($eth>= $this->h3 && $eth< 24  && $et_st_00 - $this->h3*3600>0)
        { 
            $eth=$et_st_00>86400?$eth+24:$eth;
            array_splice($time_arr, count($time_arr)-1, 1, $eth);
        }
        else if($eth>= $this->h2 && $eth<= $this->h3 && $et_st_00 - $this->h2*3600>0)
        {
            $eth=$et_st_00>86400?$eth+24:$eth;
            array_splice($time_arr, count($time_arr)-2, 2, $eth);
        }
        else if($eth>= $this->h1 && $eth<= $this->h2 && $et_st_00 - $this->h1*3600>0)
        {
            $eth=$et_st_00>86400?$eth+24:$eth;
            array_splice($time_arr, count($time_arr)-3, 3, $eth);
        }
        else if($eth>= 0 && $eth<= $this->h1)
        {
            $eth=$et_st_00>86400?$eth+24:$eth;
            array_splice($time_arr, count($time_arr)-4, 4, $eth);
        }     

        
        //上面的是4个时段截取,  如果跨天 可以弄成8个时段截取后面的, 超两天直接封顶50元   跨天的第二天开始循环使用sum1 234
        
        
        //dump($time_arr); //die;
        //dump(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值