简单的问题列表时间到ComboBox使用PHP


Simple question listing Time into ComboBox using PHP

作为标题,我有一个很长的时间列表,如下所示,我如何使它简短而不是疯狂的列表。

<select id="timesch">
                <option>8.00am</option>
                <option>8.30am</option>
                <option>9.00am</option>
                <option>9.30am</option>
                <option>10.00am</option>
                <option>10.30am</option>                
                <option>11.00am</option>
                <option>11.30am</option>                
                <option>12.00pm</option>
                <option>12.30pm</option>
                <option>1.00pm</option>
                <option>1.30pm</option>
                <option>2.00pm</option>
                <option>2.30pm</option>
                <option>3.00pm</option>
                <option>3.30pm</option>
                <option>4.00pm</option>
                <option>4.30pm</option>
                <option>5.00pm</option>
                <option>5.30pm</option>
                <option>6.00pm</option>
                <option>6.30pm</option>
                <option>7.00pm</option>
                <option>7.30pm</option>
                <option>8.00pm</option>
                <option>8.30pm</option>
                <option>9.00pm</option>
                <option>9.30pm</option>
                <option>10.00pm</option>
                <option>10.30pm</option>
                <option>11.00pm</option>
                <option>11.30pm</option>
                <option>12.00am</option>
            </select>

您可以像这样生成时间列表…

$times = array();
$start = strtotime('8:00am');
$finish = strtotime('12:00am tomorrow');
while($start <= $finish) {
   $times[] = date('g.ia', $start);
   $start += strtotime('+30 min', 0);
}
var_dump($times);

CodePad .

输出
array(33) {
  [0]=>
  string(6) "8.00am"
  [1]=>
  string(6) "8.30am"
  [2]=>
  string(6) "9.00am"
  [3]=>
  string(6) "9.30am"
  [4]=>
  string(7) "10.00am"
  [5]=>
  string(7) "10.30am"
  [6]=>
  string(7) "11.00am"
  [7]=>
  string(7) "11.30am"
  [8]=>
  string(7) "12.00pm"
  [9]=>
  string(7) "12.30pm"
  [10]=>
  string(6) "1.00pm"
  [11]=>
  string(6) "1.30pm"
  [12]=>
  string(6) "2.00pm"
  [13]=>
  string(6) "2.30pm"
  [14]=>
  string(6) "3.00pm"
  [15]=>
  string(6) "3.30pm"
  [16]=>
  string(6) "4.00pm"
  [17]=>
  string(6) "4.30pm"
  [18]=>
  string(6) "5.00pm"
  [19]=>
  string(6) "5.30pm"
  [20]=>
  string(6) "6.00pm"
  [21]=>
  string(6) "6.30pm"
  [22]=>
  string(6) "7.00pm"
  [23]=>
  string(6) "7.30pm"
  [24]=>
  string(6) "8.00pm"
  [25]=>
  string(6) "8.30pm"
  [26]=>
  string(6) "9.00pm"
  [27]=>
  string(6) "9.30pm"
  [28]=>
  string(7) "10.00pm"
  [29]=>
  string(7) "10.30pm"
  [30]=>
  string(7) "11.00pm"
  [31]=>
  string(7) "11.30pm"
  [32]=>
  string(7) "12.00am"

您可以相应地构建您的select元素。

Smart***, Comment删除换行符<select id="timesch"><option>8.00am</option><option>8.30am</option><option>9.00am</option><option>9.30am</option><option>10.00am</option><option>10.30am</option><option>11.00am</option><option>11.30am</option><option>12.00pm</option><option>12.30pm</option><option>1.00pm</option><option>1.30pm</option><option>2.00pm</option><option>2.30pm</option><option>3.00pm</option><option>3.30pm</option><option>4.00pm</option><option>4.30pm</option><option>5.00pm</option><option>5.30pm</option><option>6.00pm</option><option>6.30pm</option><option>7.00pm</option><option>7.30pm</option><option>8.00pm</option><option>8.30pm</option><option>9.00pm</option><option>9.30pm</option><option>10.00pm</option><option>10.30pm</option><option>11.00pm</option><option>11.30pm</option><option>12.00am</option></select>

如果你已经创建了它,我不建议修改它。实际上,我更愿意生成它一次,然后使用该副本,而不是在每次页面加载时创建它。它还有助于提高可读性。

虽然我认为你可以使用php循环,将30加到一个变量中,除以60,如果它大于或等于1,减去12,然后加上pm。

下面是一个生成选项列表的php函数(如果你想这么做的话):
function GenerateTimeSelect ()
{
    echo '<select>';
    for ($i=0;$i<60*24;$i=$i+30)
    {
        $hours = (int)($i/60);
        $minutes = (($i%60 == 0)?00:30);
        $isPM = false;
        //Fix hours, our time system is really weird :/
        if ($hours == 0)
            $hours = 12;
        if ($hours >= 13)
        {
            $hours -= 12;
            $isPM = true;
        }
        echo '<option>'.$hours.'.'.(($minutes == 0)?'00':$minutes).(($isPM)?'PM':'AM').'</option>';
    }
    echo '</select>';
}