PHP选择框有多个时间和日期选项

时间:2014-01-07 17:13:32

标签: php html

我想在我的网站上有一个选择框,有多个选项(从今天开始最多3天)

并显示以下选项:

<optgroup>Wednesday 8th Janurary (tomorrow)</optgroup>
<option>08:00 - 10:00</option>
<option>10:00 - 12:00</option>

每天09:0017:00,将来最多3天

我在互联网上发现了这个但我不太确定如何完成它我想要的方式:

$start = "11:00";
    $end = "13:30";

    $tStart = strtotime($start);
    $tEnd = strtotime($end);
    $tNow = $tStart;

    while($tNow <= $tEnd){
      echo date("H:i",$tNow)."\n";
      $tNow = strtotime('+30 minutes',$tNow);
    }

更新:

我也试过这个:

<select name="time">
    <?php for($i = 1; $i <= 24; $i++) {
        echo '<option value="'.$i.'">'.date("h.iA", strtotime("$i:00")).'</option>';
    }
    ?>
    </select>

但它只是一直显示

更新

好的,从答案更新:

我尝试过:

<select name="time"><?php
    for ($i = 0; $i <= 3; ++$i) {
        echo '<optgroup label="'.date('l j F', strtotime('+ ' . $i . ' day')).'">';
        for ($n = 9; $n < 16; $n = $n + 3) {
            if(!$n > date("H")) {
                echo '<option>'.$n.':00 - '.($n+2).':00</option>';
            }
        }
        echo '</optgroup>';
    }
    ?></select>

我在if语句中添加了它现在没有显示的任何时间。我想删除已经发生过的时间吗?

2 个答案:

答案 0 :(得分:0)

所以你希望它从09:00开始,在17:00结束,每个选项有两个小时的插槽?

然后这个:

<select>

<?php for ($i = date('G') < 17 ? 0 : 1; $i <= 2; ++$i) { ?>

  <optgroup label="<?php echo date('l j F', strtotime('+ ' . $i . ' day')); echo !$i ? ' (Today)' : (1 === $i ? ' (Tomorrow)' : ''); ?>">

    <?php for ($n = 9; $n < 16; $n += 2) { if ($i || date('G', strtotime('+ 15 minutes')) < $n + 2) { ?>

      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>

    <?php } } ?>

  </optgroup>

<?php } ?>

</select>

答案 1 :(得分:0)

我只对米歇尔·拉什顿先生的努力做了一些小修改。对我来说,归功于MichaelRushton先生。但仍然在这里

    <select>

<?php for ($i = 1; $i <= 2; ++$i) { ?>

  <optgroup label="<?php echo date('l j F', strtotime('+ ' . $i . ' day')); ?>">
    <?php if($i==0) { ?>
    <?php for ($n = date('H'); $n < 16; $n += 3) { ?>
      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>
    <?php } }?> 
    <?php for ($n = 9; $n < 16; $n = $n + 3) { ?>

      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>

    <?php } ?>

  </optgroup>

<?php } ?>

</select>