我已成功填充下拉列表,以便在15分钟内显示时间。间隔和默认为最近的时间,但我需要将其限制在当前时间之前8小时,并选择“尽快”代替最近的当前时间。
例如现在是下午3:30
所以html应该是这样的......
<option selected="selected">ASAP</option> Time = 3:30 pm
<option>3:45 pm</option>
<option>4:00 pm</option>
<option>4:15 pm</option>
<option>4:30 pm</option>
<option>4:45 pm</option>
等...
这是我目前的代码......
<?
$time = time();
$rounded_time = $time % 900 > 450 ? $time += (900 - $time % 900): $time -= $time % 900;
$start = strtotime('12:00am');
$end = strtotime('11:59pm');
for( $i = $start; $i <= $end; $i += 900)
{
$selected = ( ($rounded_time - $i) % (86400) == 0) ? ' selected=""' : '';
echo '<option' . $selected . '>' . date('g:i a', $i) . '</option>';
}
?>
答案 0 :(得分:0)
您可以修改for循环,方法是将$start
更改为当前时间(在您的示例中为$rounded_time
),将$end
更改为时间加8小时。您可以在循环之前手动添加ASAP选项。
答案 1 :(得分:0)
使用DateTime
:
$start = new DateTime;
$start->setTime($start->format('G'), ceil($start->format('i') / 15) * 15);
$end = clone $start;
$end->modify('+8 hour');
while ($start <= $end) {
echo '<option>' . $start->format('g:i a') . '</option>';
$start->modify('+15 minute');
}