Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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使用DatePeriod创建带中断计时的时隙_Php_Datetime_Php 5.3 - Fatal编程技术网

PHP使用DatePeriod创建带中断计时的时隙

PHP使用DatePeriod创建带中断计时的时隙,php,datetime,php-5.3,Php,Datetime,Php 5.3,我想创建带有开始时间、结束时间和中断时间的时隙 public function getServiceScheduleSlots($duration,$break, $stTime,$enTime) { $start = new DateTime($stTime); $end = new DateTime($enTime); $interval = new DateInterval("PT" . $duration. "M"); $period = new Date

我想创建带有开始时间、结束时间和中断时间的时隙

public function getServiceScheduleSlots($duration,$break, $stTime,$enTime)
{
    $start = new DateTime($stTime);
    $end = new DateTime($enTime);
    $interval = new DateInterval("PT" . $duration. "M");
    $period = new DatePeriod($start, $duration, $end);

    foreach ($period as $dt) {
        $periods[] = $dt->format('H:iA');
    }
    return $periods;
}
例如,
我的服务开始时间上午10:00,结束时间下午12:00
条件:每次保养时间30分钟15分钟休息。

上面的方法返回如下结果:

  • 上午10:00-10:30
  • 上午10:30-11:00
  • 上午11:00-11:30
  • 上午11:30至下午12:00
预期结果如下:

  • 上午10:00-10:30
  • 上午10:45-11:15
  • 上午11:30至下午12:00
我想在每个时段开始时添加休息时间

提前谢谢。

这个怎么样

function getServiceScheduleSlots($duration,$break, $stTime,$enTime)
{
        $start = new DateTime($stTime);
        $end = new DateTime($enTime);
        $interval = new DateInterval("PT" . $duration. "M");
        $breakInterval = new DateInterval("PT" . $break. "M");

        for ($intStart = $start; 
             $intStart < $end; 
             $intStart->add($interval)->add($breakInterval)) {

               $endPeriod = clone $intStart;
               $endPeriod->add($interval);
               if ($endPeriod > $end) {
                 $endPeriod=$end;
               }
               $periods[] = $intStart->format('H:iA') . 
                            ' - ' . 
                            $endPeriod->format('H:iA');
        }

        return $periods;
  }
函数getServiceScheduleSlots($duration、$break、$stTime、$enTime)
{
$start=新日期时间($stTime);
$end=新日期时间($enTime);
$interval=新的日期间隔(“PT”$duration.M”);
$breakInterval=新的日期间隔(“PT.$break.M”);
对于($intStart=$start;
$intStart<$end;
$intStart->add($interval)->add($breakInterval)){
$endPeriod=clone$intStart;
$endPeriod->add($interval);
如果($endPeriod>$end){
$endPeriod=$end;
}
$periods[]=$intStart->format('H:iA')。
' - ' . 
$endPeriod->format('H:iA');
}
返回$periods;
}

Supery work buddy,现在你能告诉我,如果我们想在开始和结束时间之间增加1小时的休息时间,我们应该怎么做吗?该时间不应显示在数组中