首页 > 解决方案 > 检查时间是否在两次和间隔之间

问题描述

假设有两个给定的时间和一个间隔。我可以检查时间是否在两个给定时间之间,如下所示:

$timeA = '00:30:00';
$timeB = '14:00:00';
$interval = 30; // minutes

$inputTime = '00:45:00'; // user inputted time

$input = new DateTime($inputTime);
$begin = new DateTime($timeA);
$end = new DateTime($timeB);

if($input >= $begin && $input <= $end) {
    echo 'Success';
} else {
    echo 'Fail';
}

但是如何检查间隔?例如,间隔为 30 分钟,因此仅$inputTime在介于$begin$endAND 以下情况之一时显示成功消息:

00:30:00
01:00:00
01:30:00
02:00:00
02:30:00
03:00:00
03:30:00
04:00:00
04:30:00
...
13:30:00
14:00:00

如果它没有落在“间隔”时间之一,那么它就会失败。

标签: phpdatedatetimetimeintervals

解决方案


您可以遍历两个给定时间之间的时间,如果它落在“间隔”时间,您可以中断for循环并回显成功消息。

例如:

$found = false;
for ($i=0; $i < 1440; $i++) {
    $begin->add(new DateInterval('PT' . $interval . 'M'));
    if($begin == $input) {
        $found = true;
        break;
    } elseif($begin > $input || $begin > $end) {
        $found = false;
        break;
    }
}

if($found) {
    echo 'Success';
} else {
    echo 'Fail';
}

推荐阅读