指定时段重复期数计算

目的

已知一个彩票知道第210786期开奖时间为20:03:30,
并且彩票在20:03:30~21:04:30不开奖,其余时间每隔210s开一次奖.
求任意期数的开奖时间.

代码

public function t()
    {
        $基准时间 = strtotime('2017-02-20 20:03:30');
        $基准期数 = 210786;

        $计算时间 = strtotime('2017-02-20 20:03:30');
        $计算期数 = 210787;

        $期数间隔=210;

        function 期数有效($time){

            $无效开始时间=mktime(20,03,30,date('d',$time),date('m',$time),date('Y',$time));
            $无效结束时间=mktime(21,04,30,date('d',$time),date('m',$time),date('Y',$time));
            return !(($无效开始时间<$time) && ($time< $无效结束时间));
        }
        while ($基准期数 <> $计算期数) {
            if ($基准期数 < $计算期数) {
                $计算时间+=$期数间隔;
                if(期数有效($计算时间))
                    $计算期数--;
            } elseif ($基准期数 > $计算期数) {
                $计算时间-=$期数间隔;
                if(期数有效($计算时间))
                    $计算期数++;
            }
        }
        RETURN date('Y-m-d H:i:s',$计算时间);
    }

猜你喜欢

转载自blog.csdn.net/chenzhuyu/article/details/59159935
今日推荐