如何在距当前时间8小时的15分钟间隔内填充时间下拉菜单

时间:2014-01-02 22:07:12

标签: php time

我已成功填充下拉列表,以便在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>';
}
?>

2 个答案:

答案 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');
}

demo

相关问题