实现效果:
医院诊所门诊在线挂号系统可能用的上该函数:
/**
@start_time 开始时间
@end_time 结束时间
@limitMin 每隔多少分钟 默认15分钟
*/
function get_time_range($start_time, $end_time, $limitMin = 15) {
$start = strtotime($start_time);
$end = strtotime($end_time);
// 计算内共有多少个时间段
$intervals = ($end - $start) / (60 * $limitMin);
$result = [];
for ($i=0; $i<$intervals+1; $i++) {
// 根据当前索引值计算起始时间和结束时间
$currentStart = date('Y-m-d H:i', $start + $i * 60 * $limitMin);
$startArr = explode(' ', $currentStart);
$nextEnd = date('Y-m-d H:i', $start + ($i+1) * 60 * $limitMin);
$nextEndArr = explode(' ', $nextEnd);
if(($start + ($i+1) * 60 * $limitMin) <= $end){
$tmp = [
'timeStr' => $startArr[1].'~'.$nextEndArr[1],
'sortVal' => strtotime($currentStart)
];
// 添加到结果数组中
array_push($result, $tmp);
}
}
return $result;
}
$res = get_time_range('2022-09-30 08:00', '2022-09-30 12:00');
print_r($res);
输出结果如图: