我有一个时间字符串,还有一个带增量的时间范围。$start = strtotime('10:00:00');$end = strtotime('23:30:00');$increment = 30;$given = strtotime('10:20:00');if(if number lands on an incremented number) { echo 'success'} else { echo 'fail';}在示例中,我想查看是否$given落在$start和之间的递增时间之一$end。增加时间意味着将$increment加到$start直到我们到达$end。所以在上面的示例代码中,以下数字是唯一应该通过检查的数字:10:00:0010:30:0011:00:0011:30:0012:00:0012:30:0013:00:0013:30:0014:00:0014:30:0015:00:0015:30:00...23:30:00在这种情况下,$given= 10:20:00 所以它没有通过检查。我不想使用 for 循环。我想看看是否有任何数学,比如检查余数%或类似的东西。
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
是的,您可以使用%
它。
首先,您需要将增量转换为秒。
$increment *= 60;
然后你可以通过检查找到答案
给定时间小于结束时间,并且
给定时间和开始时间的差值可以除以增量(即差%增量== 0)
if ($given <= $end && 0 == ($given - $start) % $increment) {
echo 'success';
} else {
echo 'fail';
}
凤凰求蛊
TA贡献1825条经验 获得超4个赞
另一种方法是创建一个增量范围,从开始到结束,看看是否在该数组中找到给定的:
if(in_array($given, range($start, $end, $increment * 60))) {
echo 'success';
} else {
echo 'fail';
}
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消