php - 检查时间是否在两次和间隔之间
问题描述
假设有两个给定的时间和一个间隔。我可以检查时间是否在两个给定时间之间,如下所示:
$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
AND 以下情况之一时显示成功消息:
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
如果它没有落在“间隔”时间之一,那么它就会失败。
解决方案
您可以遍历两个给定时间之间的时间,如果它落在“间隔”时间,您可以中断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';
}
推荐阅读
- c++ - C 预处理器中的递归是否滥用了标准中的不一致?
- java - 尝试连接到 Openshift 上部署的 ActiveMQ Artemis 时连接被拒绝
- android - 手机号码变更时如何处理手机认证登录?
- reactjs - Material-UI 中样式化组件样式的混淆
- c# - 来自 API 的带有数组响应的 JSON
- wordpress - WooCommerce,如何在客户电子邮件中的订单详细信息上方放置购买说明?
- data-visualization - Tableau:获取仅包含另一列中选定值的 id
- angular - Mat Table 的 Mat Paginator 不适用于 api 数据
- file - 为什么 vfs_write() 添加任意数量的零字节
- python - 在 Python 中更改外部 IP 地址