我目前正在使用以下PHP代码生成不同时间的选择框:
<?
for ($x = 28; $x < 81; $x++) {
if ($x == 48) {
print "<option selected='selected' value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>";
}
else {
print "<option value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>";
}
}
?>
所有时间间隔为15分钟: 12:00:00 12时15分零零秒 12:30:00 十二时45分00秒 13:00:00 //等等......
我想知道的是:我如何给出当前时间,将最接近的时间作为“选定”时间。
例如,如果当前的PHP时间是:12:32:14,我希望选择“下午12:45”。
关于如何做到这一点的任何想法?
答案 0 :(得分:4)
<?php
$start = '7:00:00';
$end = '20:00:00';
$now = time();
$ts = strtotime($start);
$endTs = strtotime($end);
while ($ts <= $endTs)
{
$selected = '';
if ($ts - $now > 0 && $ts - $now <= 60*15)
$selected = 'selected="selected"';
$time = date('H:i:s', $ts);
echo "<option $selected value='$time'>" . date("g:i a", $ts) . "</option>\n";
$ts = strtotime('+15 minutes', $ts);
}
?>
答案 1 :(得分:1)
这是一个开始。您需要稍微扩展条件,以便在表达式评估为负值时不继续输出“已选择”。
<?
for ($x = 28; $x < 81; $x++) {
$sel = '';
//if the current time is within 15 minutes of the computed time, select this box.
if ( (mktime(0, $x*15, 0, 0, 0) - time()) < (15*60) ) $sel = 'selected="selected"';
print "<option $sel value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>";
}
?>