我正在为客户开发预订系统。我被困在一个地方。给定日期的时隙是通过指定开始时间,结束时间,持续时间和休息时间来动态生成的。
$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;
}
$starttime = $intStart->format('h:iA');
$endtime = $endPeriod->format('h:iA');
$timeslot = $starttime.' - '.$endtime;
}
现在,它可以成功地生成如下的时隙,其中持续时间和中断时间均为15分钟:
09:00 AM-09:15 AM
09:30 AM-09:45 AM
10:00 AM-10:15 AM
10:30 AM-10:45 AM
11:00 AM-11:15 AM
11:30 AM-11:45 AM
下午12:00-下午12:15
当某人预订日期时,开始时间和结束时间将保存在数据库中。我可以使用以下查询来检查是否已有预订:
select * from bookings where starttime='$start' AND endtime='$end' AND bookingdate='$date'
现在的问题是持续时间是动态的。当我将持续时间更改为30分钟时。
新的时隙将像这样生成
09:00 AM-09:30 AM
09:45 AM-10:15 AM
10:30 AM-11:00 AM
11:15 AM-11:45 AM
12:00 PM-12:30 PM
现在,如果要检查是否已预订空位,则时隙与开始时间和结束时间现在与数据库中保存的时间不同。 我该如何解决这种情况?我希望15分钟的旧预订即使显示30分钟的新续订时间也显示预订。
更新
所需结果。
当我们在30分钟的时间之前从10:00 am到10:30 am进行预订时,需要15分钟的期望结果。
09:00 AM-09:15 AM
09:30 AM-09:45 AM
上午10:00-上午10:30 –预订
10:30 AM-10:45 AM
11:00 AM-11:15 AM
11:30 AM-11:45 AM
12:00 PM-12:15 PM