Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP获取中间时间间隔_Php_Date_Time - Fatal编程技术网

PHP获取中间时间间隔

PHP获取中间时间间隔,php,date,time,Php,Date,Time,我开发了一个函数,可以在用户生成的时间范围内获得相等的时间间隔 $start = strtotime("12:00"); //start at... $end = strtotime("18:00"); //end at... $timeframe = $end - $start; //time-frame $intervals = 3; //number of int

我开发了一个函数,可以在用户生成的时间范围内获得相等的时间间隔

$start         = strtotime("12:00");    //start at...
$end           = strtotime("18:00");    //end at...
$timeframe     = $end - $start;         //time-frame    
$intervals     = 3;                     //number of intervals within time-frame
$interval_time = $timeframe/$intervals; //time of each interval

for($i = 0, $start; 
    $i < $intervals; 
    $i++, $start = strtotime("+$interval_time seconds", $start)) //increment time
    { 
        $new_time = date('H:i:s a', $start); 
        echo "$new_time \n"; 
    }
我可以合并什么代码来划分每个间隔并获得中间值?例如,从上面的代码中获取

13:00:00 pm 15:00:00 pm 17:00:00 pm

请告知:)

将您的
for
循环替换为:

$half_interval = $interval_time / 2;
$mid = $start + $half_interval;
for ( $i = 1; $i < $intervals; $i ++) {
    echo date('H:i:s a', $mid) . " \n";
    $mid += $interval_time;
}
echo date('H:i:s a', $mid) . " \n";
$half_interval=$interval_time/2;
$mid=$start+$half_间隔;
对于($i=1;$i<$interval;$i++){
回显日期('H:i:SA',$mid)。“\n”;
$mid+=$interval\u时间;
}
回音日期('H:i:SA',$mid)。“\n”;

诚然,这是一个简单的方法。我相信改进是可能的,但留给读者作为练习!;-)

for
循环替换为:

$half_interval = $interval_time / 2;
$mid = $start + $half_interval;
for ( $i = 1; $i < $intervals; $i ++) {
    echo date('H:i:s a', $mid) . " \n";
    $mid += $interval_time;
}
echo date('H:i:s a', $mid) . " \n";
$half_interval=$interval_time/2;
$mid=$start+$half_间隔;
对于($i=1;$i<$interval;$i++){
回显日期('H:i:SA',$mid)。“\n”;
$mid+=$interval\u时间;
}
回音日期('H:i:SA',$mid)。“\n”;

诚然,这是一个简单的方法。我相信改进是可能的,但留给读者作为练习!;-)

尝试
$start+=$interval\u time/2在第6行。顺便说一句,这是家庭作业吗?因为在我看来,如果你能写上面的代码,你也能修复这个…@钉子,谢谢!代码似乎有效。你说的家庭作业是什么意思?我刚刚接触增量运算符。@CyberJunkie如果输入是“开始12:00结束15:00”,你会有什么期望?@meze我得到
12:30:00pm 13:30:00pm 14:30:00pm
使用新代码来查找中值。@CyberJunkie这取决于你需要什么。您可以将其替换为
$start+=ceil($interval\u time/2/3600)*3600但在下午13:00-14:00的时间范围内进行检查。尝试
$start+=$interval\u time/2在第6行。顺便说一句,这是家庭作业吗?因为在我看来,如果你能写上面的代码,你也能修复这个…@钉子,谢谢!代码似乎有效。你说的家庭作业是什么意思?我刚刚接触增量运算符。@CyberJunkie如果输入是“开始12:00结束15:00”,你会有什么期望?@meze我得到
12:30:00pm 13:30:00pm 14:30:00pm
使用新代码来查找中值。@CyberJunkie这取决于你需要什么。您可以将其替换为
$start+=ceil($interval\u time/2/3600)*3600但在下午13:00-14:00的时间范围内进行检查。