php - 在半小时范围内显示小时数

标签 php date for-loop time

我正在编写一个约会脚本,它从数据库中获取办公室的开放时间和关闭时间,然后显示开放时间和关闭时间之间的时间来预订 session ,每次 session 只能预订半小时,所以我需要使用单选按钮显示这样的时间

9:00am  - 9:30am
9:30am  - 10:00am
10:00am - 10:30am
...
...
...

我能够计算办公室开放的总小时数,并且使用 for 循环我能够显示时间

$office_start_time = '09:00:00';
$office_end_time = '16:00:00';

$start = explode(':', $office_start_time);
$end = explode(':', $office_end_time);
$total_hours = $end[0] - $start[0] - ($end[1] < $start[1]);
echo 'total hours: '.$total_hours;
echo '<br>';
//exit;
?>
<table class="table table-hover table-bordered">
    <tbody>
    <?php for ($i = 0; $i < $total_hours; $i++) {
        echo "<input name='time' type='radio' value='09:00|09:30'> 9:00am-9:30am<br/>";
        ?>

    <?php } ?>
    </tbody>
</table>

我的问题是上面的代码给了我如下的输出,我一直在思考如何获得正确的结果

enter image description here

如果我能在如下显示时间方面得到一些帮助,我将不胜感激

9:00am  - 9:30am
9:30am  - 10:00am
10:00am - 10:30am
...
...
...

最佳答案

$start    = new DateTime('09:00:00');
$end      = new DateTime('16:00:01'); // add 1 second because last one is not included in the loop
$interval = new DateInterval('PT30M');
$period   = new DatePeriod($start, $interval, $end);

$previous = '';
foreach ($period as $dt) {
    $current = $dt->format("h:ia");
    if (!empty($previous)) {
        echo "<input name='time' type='radio' value='{$previous}|{$current}'> {$previous}-{$current}<br/>";
    }
    $previous = $current;
}

See it in action

关于php - 在半小时范围内显示小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536146/

相关文章:

php - Mysql where子句(查找where表列匹配)

java - 在 Java 中序列化日期

java - mongodb 中的日期不正确

c++ - 为什么 C++ 不允许在一个 auto 语句中使用多种类型?

c++ - 如何在 for 循环中进行错误捕获

php - 多个 mysql_query 不起作用

php - 使用德语时出现字母数字验证错误

java - 获取Excel中日期列的日期格式

c++ - 为循环优雅地并行初始化 openmp 线程

php - Laravel Echo 不听