【问题标题】:How to check two times in a time range using php如何使用php在一个时间范围内检查两次
【发布时间】:2016-10-29 05:36:49
【问题描述】:

我有两个时间,比如 start_time 和 end_time,还有一个时间范围,比如开始时间和结束时间。我想检查 start_time 和 end_time 是否在开始时间和结束时间的范围内。如何检查。

$start_time1 = 10:15 am; //! time table start time
$end_time1 = 12:30 pm;   //! time table end time

$strattime2 = 10:00 am; //! time range - start time
$endtime2 = 1:00 pm;   //! time range - end time

如何解决这个问题?

【问题讨论】:

    标签: php time


    【解决方案1】:

    只需检查范围的边界。查询必须在范围内或之后开始,并且必须在范围结束时或之前结束。所以

    function check($queryStart, $queryEnd, $rangeStart, $rangeEnd) {
        return ($queryStart >= $rangeStart && $queryEnd <= $rangeEnd);
    }
    

    如果要检查查询是否与范围重叠,则应检查查询是在范围开始之前结束还是在范围结束之后开始。

    function overlap($queryStart, $queryEnd, $rangeStart, $rangeEnd) {
        return !($queryEnd < $rangeStart || $queryStart > $rangeEnd);
    }
    

    【讨论】:

      【解决方案2】:

      您可以一直转换为DateTime() 对象,然后像这样检查差异:

          <?php   
      
              function startStopTimeIsWithinRange($startTime='10:15', $stopTime='12:30') {                
                  $dateStart      = new DateTime('2016-10-30 ' . $startTime);     //<== IGNORE, THE DATE. NOTICE THE TIME
                  $dateStop       = new DateTime('2016-10-30 ' . $stopTime);      //<== IGNORE, THE DATE. NOTICE THE TIME
      
                  $rangeStart     = new DateTime('2016-10-30 10:00');             //<== IGNORE, THE DATE. NOTICE THE TIME
                  $rangeStop      = new DateTime('2016-10-30 13:00');             //<== IGNORE, THE DATE. NOTICE THE TIME
      
                  if($dateStart >= $rangeStart && $rangeStop >= $dateStop){
                      return true;
                  }
                  return false;               
              }
      
              var_dump( startStopTimeIsWithinRange('10:15', '12:30')  );           //<== NOTICE THE COLON (:) AND NOT DOT (.)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-29
        相关资源
        最近更新 更多