我正在用PHP创建一个每日计划器,每30分钟我会写一行表,检查约会是否匹配。然而,我在预约时间部分遇到了问题,例如我必须检查时间:15:34:58 - 16:34:58
,我无法获得15:30
和16:00
之间的匹配。这是我的代码:
try {
$inizio=new DateTime($r["data"]." ".$r["ora"]); // for me is 15:34:58
$fine=new DateTime($r["data_fin"]." ".$r["ora_fin"]); // for me is 16:34:58
$timetoCheck=new DateTime(date("Y-m-d")." ".$h.":".$m.":00"); //dinamically change in 15:30 16:00 and so on..
$intervallo=new DateInterval("PT30M");
$range=new DatePeriod($inizio, $intervallo, $fine);
foreach ($range as $fase){
if (($timetoCheck>=$inizio) and ($timetoCheck<=$fine)) {
echo $fase->format("H:i:s")." ". $inizio->format("H:i:s")." - ".$fine->format("H:i:s")."<br/><a href='#' id='evento_".$r["key_id"]."'>".$r["titolo"]."</a><br/>";
}
}
} catch (Exception $ecc){
$logger->error($ecc->getMessage());
}
尝试不同的时间比较方式?
$dateTime = new DateTime("15:40:10");
$startTime = new DateTime("15:30:00");
$endTime = new DateTime("16:00:00");
if ($dateTime->diff($startTime)->format('%R') == '-' && $dateTime->diff($endTime)->format('%R') == '+') {
// current time is within the appointment period
} else {
// current time is either before or after the appointment period
}
http://php.net/datetime.diff