我想在我的网站上有一个选择框,有多个选项(从今天开始最多3天)
并显示以下选项:
<optgroup>Wednesday 8th Janurary (tomorrow)</optgroup>
<option>08:00 - 10:00</option>
<option>10:00 - 12:00</option>
每天09:00
到17: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语句中添加了它现在没有显示的任何时间。我想删除已经发生过的时间吗?
答案 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>