餐厅早餐,午餐,晚餐多次之间的时间

时间:2015-08-13 11:38:10

标签: php

我试图计算当前时间是否在餐馆的营业时间内。

这是在线订购系统。因此用户需要选择交付时间。餐厅有以下开放和关闭时间:

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++;
}

1 个答案:

答案 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点