假设有两个给定的时间和一个间隔。我可以检查时间是否在两个给定时间之间,例如:
$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
,如果它不属于“间隔”时间之一,则失败。
答案 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分钟之间的时差。