检查数字是否在两个带有增量的数字之间

我有一个时间字符串,还有一个带增量的时间范围。


$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:00

10:30:00

11:00:00

11:30:00

12:00:00

12:30:00

13:00:00

13:30:00

14:00:00

14:30:00

15:00:00

15:30:00

...

23:30:00

在这种情况下,$given= 10:20:00 所以它没有通过检查。我不想使用 for 循环。我想看看是否有任何数学,比如检查余数%或类似的东西。


白衣染霜花
浏览 92回答 2
2回答

慕妹3242003

是的,您可以使用%它。首先,您需要将增量转换为秒。$increment&nbsp;*=&nbsp;60;然后你可以通过检查找到答案给定时间小于结束时间,并且给定时间和开始时间的差值可以除以增量(即差%增量== 0)if ($given <= $end && 0 == ($given - $start) % $increment) {&nbsp; &nbsp; echo 'success';} else {&nbsp; &nbsp; echo 'fail';}

凤凰求蛊

另一种方法是创建一个增量范围,从开始到结束,看看是否在该数组中找到给定的:if(in_array($given, range($start, $end, $increment * 60))) {&nbsp; &nbsp; echo 'success';} else {&nbsp; &nbsp; echo 'fail';}
打开App,查看更多内容
随时随地看视频慕课网APP