PHP检查时间是否在范围内,质疑常见的解决方案

时间:2014-11-17 17:37:38

标签: php if-statement time range

我必须检查当前白天是否属于特定范围。我查了一下互联网,发现了几个类似的解决方案:

$now = date("His");//or date("H:i:s")

$start = '130000';//or '13:00:00'
$end = '170000';//or '17:00:00'

if($now >= $start && $now <= $end){
echo "Time in between";
}
else{
echo "Time outside constraints";
}

如果两个条件必须都是真的,当我们假设$ start是06:00:00而$ end是02:00:00时,这个bis怎么能实现。

如果我们假设它是01:00:00,在这种情况下,第一个条件不能成立。

有人有想法以不同的方式处理这个问题吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

当然,您必须在比较中说明日期。

<?php

$start = strtotime('2014-11-17 06:00:00');
$end = strtotime('2014-11-18 02:00:00');

if(time() >= $start && time() <= $end) {
  // ok
} else {
  // not ok
}

答案 1 :(得分:1)

date_default_timezone_set("Asia/Colombo");
            $nowDate = date("Y-m-d h:i:sa");
            //echo '<br>' . $nowDate;
            $start = '21:39:35';
            $end   = '25:39:35';
            $time = date("H:i:s", strtotime($nowDate));
            $this->isWithInTime($start, $end, $time);


 function isWithInTime($start,$end,$time) {

            if (($time >= $start )&& ($time <= $end)) {
               // echo 'OK';
                return TRUE;
            } else {
                //echo 'Not OK';
                return FALSE;
            }

}

答案 2 :(得分:1)

由于声誉低下而无法发表评论,但是@DOfficial回答很好,但要注意比较的不一致。

原始

 // if current time is past start time or before end time
 if($now >= $start || $now < $end){

应该是恕我直言

 // if current time is past start time or before end time
 if($now >= $start || $now <= $end){

答案 3 :(得分:0)

如果您需要检查时间框架是否超过午夜

    function isWithinTimeRange($start, $end){

        $now = date("His");

        // time frame rolls over midnight
        if($start > $end) {

            // if current time is past start time or before end time

            if($now >= $start || $now < $end){
                return true;
            }
        }

        // else time frame is within same day check if we are between start and end

        else if ($now >= $start && $now <= $end) {
            return true;
        }

        return false;
    }

然后,您可以通过

了解您是否在该时间范围内
echo isWithinTimeRange(130000, 170000);