转换开始/结束时间到每小时的间隔PHP


Convert Start/End Time into Hourly Intervals PHP

我有一个简单的表单,允许用户输入开始时间和结束时间。提交后,我需要为开始和结束时间之间的每小时创建小时间隔。例如,如果他们选择开始时间'3:00pm'和结束时间'7:00pm',我想在我的数据库中创建4条记录,如下所示:

开始结束下午三点下午1:00下午1:00下午5:00下午5:00点6点7点

用户正在用这些值从选择菜单中进行选择:

        <option value="10:00am">10:00am</option>
        <option value="11:00am">11:00am</option>
        <option value="12:00pm">12:00pm</option>
        <option value="1:00pm">1:00pm</option>
        <option value="2:00pm">2:00pm</option>
        <option value="3:00pm">3:00pm</option>
        <option value="4:00pm">4:00pm</option>
        <option value="5:00pm">5:00pm</option>
        <option value="6:00pm">6:00pm</option>
        <option value="7:00pm">7:00pm</option>
        <option value="8:00pm">8:00pm</option>
        <option value="9:00pm">9:00pm</option>
        <option value="10:00pm">10:00pm</option>
        <option value="11:00pm">11:00pm</option>

我正在像这样检索开始时间和结束时间:

$startTime =  $_POST['timeStart'];
$endTime = $_POST['timeEnd'] ;

我假设我需要做一个foreach,但不确定如何在循环中获取时间间隔,并设置每个间隔的开始/结束时间?

遵循使用strtotime和date函数的常规方法并遍历结果。

试试这个:

$startTime = strtotime($startTime);   /* Find the timestamp of start time */
$endTime = strtotime($endTime);       /* Find the timestamp of end time */
$input = array();
/* Run a loop from start timestamp to end timestamp */
for ($i = $startTime; $i < $endTime; $i+=3600) {
    $input[] = array(
        "start_time" => date("h:ia", $i), 
        "end_time" => date("h:ia", ($i+3600))
    );
}

对于输入$_POST['timeStart'] = '3:00pm';$_POST['timeEnd'] = '7:00pm';,输出将为:

Array
(
 [0] => Array
    (
        [start_time] => 03:00pm
        [end_time] => 04:00pm
    )
  [1] => Array
    (
        [start_time] => 04:00pm
        [end_time] => 05:00pm
    )
  [2] => Array
    (
        [start_time] => 05:00pm
        [end_time] => 06:00pm
    )
  [3] => Array
    (
        [start_time] => 06:00pm
        [end_time] => 07:00pm
    )
 )