检查时间是否在两次和间隔之间
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分钟的区别
假设有两个给定时间和一个间隔。我可以像这样检查时间是否在两个给定时间之间:
$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分钟的区别