PHP - 以15为增量计数,但最大值为45

时间:2018-05-11 17:35:13

标签: php for-loop

我正在使用军事时间(0930,1000等)。我有一个开始时间和结束时间。我需要找到它们之间15分钟增量的数量,即0900到1115将是8个15块,1130到1430将是12个15块,等等。我怎么能用for循环呢?

3 个答案:

答案 0 :(得分:4)

我会看strtotime

这不是一个愚蠢的问题吗?我的意思是,任何时候差异问题都可能涵盖这一点。

简单的事情就是:

<?php
$timeStart = '11:30';
$timeStop = '13:30';

$diff = strtotime($timeStart) - strtotime($timeStop);
echo ABS($diff / 60 / 15); // the total number of minutes between the the two times divided by 15. 

不确定如何围绕商数。

答案 1 :(得分:0)

您可以使用此方法 我将时间转换为十进制值并减去。
然后乘以4,因为一小时内有四个quater。

$start = "09:30";
$end = "11:15";

list($hour, $min) = explode(":",$start);
$start = $hour + round($min/60,2);

list($hour, $min) = explode(":",$end);
$end = $hour + round($min/60,2);

echo ($end-$start)*4;

https://3v4l.org/q566p

答案 2 :(得分:0)

我已尝试使用 for loop

来实现您的答案
function militaryTime($startTime,$endTime,$interval=15)
{
   $count = 0;
   for($i=00;$i<=23;$i++)
   {
        for($j=00;$j<=59;$j++)
        {
            if(strtotime($i.":".$j)>strtotime($startTime) && strtotime($i.":".$j)<strtotime($endTime))
            {
                if($j%$interval==0)
                {
                    //echo $i.":".$j."<br>";
                    $count++;
                }
            }
        }
    }
    return $count;
}
$countOfMins = militaryTime("09:00","11:15"); //call the above declared function and get Value.

当你运行它时,它将按预期产生输出,即8。