我试图计算当前时间是否在餐馆的营业时间内。
这是在线订购系统。因此用户需要选择交付时间。餐厅有以下开放和关闭时间:
Monday 11am-2:30pm 5:30pm-10pm
CLOSED TUESDAYS
Wednesday 11am-2:30pm 5:30pm-10pm
Thursday 11am-2:30pm 5:30pm-10pm
Friday 11am-2:30pm 5:30pm-12am
Saturday 11:30am-3pm 5:30pm-12am
Sunday 11:30am-3pm 5:30pm-10pm
我必须显示一个选择框以选择此时间范围内的交货时间。
我一次使用这个脚本。我如何使用多个开放时间?
$start = new DateTime();
$start->setTime($start->format('H'), ceil($start->format('i') / 45) * 45);
$end = new DateTime('22:00:00');
$i=1;
while ($start <= $end) {
if($i==1){
echo '<option>' . $start->format('g:i a') . '</option>', "\n";
}else{
echo '<option>' . $start->format('g:i a') . '</option>', "\n";
}
$start->modify('+30 minute');
$i++;
}
答案 0 :(得分:0)
通过使用多维数组,您可以轻松添加所需的时间范围:
$open = array(
"Monday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "02:30 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "10:00 pm"
)
),
"Wednesday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "02:30 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "10:00 pm"
)
),
"Thursday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "02:30 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "10:00 pm"
)
),
"Friday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "02:30 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "12:00 am + 1day"
)
),
"Saturday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "03:00 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "12:00 am + 1day"
)
),
"Sunday" => array(
0 => array(
"begin" => "11:00 am",
"end" => "03:00 pm"
),
1 => array(
"begin" => "05:30 pm",
"end" => "10:00 pm"
)
)
);
通过循环,您可以遍历它并生成30分钟的交付时间。
foreach($open as $day => $hours)
{
echo $day . "<br>";
for($j = 0; $j < count($hours); $j++)
{
$start = new DateTime($hours[$j]['begin']);
$end = new DateTime($hours[$j]['end']);
echo "<br>";
$i=1;
while ($start <= $end) {
if($i==1){
echo '<option>' . $start->format('g:i a') . '</option>', "\n";
}else{
echo '<option>' . $start->format('g:i a') . '</option>', "\n";
}
$start->modify('+30 minute');
$i++;
}
}
echo "<br>";
}
结果将是:
<强>周一强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 晚上10点<强>星期三强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 晚上10点<强>星期四强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 晚上10点<强>星期五强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 下午10:00 晚上10:30 晚上11点 晚上11:30 凌晨12:00。<强>星期六强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30 下午3:00
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 下午10:00 晚上10:30 晚上11点 晚上11:30 凌晨12:00。<强>星期日强>
上午11:00 上午11:30 12:00 PM 下午12:30 1:00 PM 下午1:30 下午2点 下午2:30 下午3:00
下午5:30 下午6点 下午6点30分 下午7时00 晚上7:30 8:00 PM 晚上8:30 9:00 PM 晚上9:30 晚上10点