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

Check if time is between two times and interval

假设有两个给定时间和一个间隔。我可以像这样检查时间是否在两个给定时间之间:

$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

如果它没有落在 "interval" 次之一,则失败。

您可以循环遍历两个给定时间之间的时间,如果它落在 "interval" 时间,您可以从 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';
}

可以用strtotime()转换成整数时间,然后求差。然后比较那个时间和30分​​钟的区别