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小时的休息时间,我们应该怎么做吗?该时间不应显示在数组中