检查时间是否在两次间隔之间

时间:2019-12-06 16:42:53

标签: php date datetime time intervals

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

$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$end之间并且满足以下条件之一时,才会显示成功消息:

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

,如果它不属于“间隔”时间之一,则失败。

2 个答案:

答案 0 :(得分:1)

您可以循环浏览两个给定时间之间的时间,如果它停留在“间隔”时间,则可以退出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';
}

答案 1 :(得分:0)

您可以使用strtotime()转换为整数时间,然后求出差值。然后比较该时间与30分钟之间的时差。