Как перебрать время в окне выбора PHP - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть выпадающий список, в котором я хочу перечислить время в формате ЧЧ: ММ с интервалом в 1 минуту. поэтому список начнется в 00:00 и закончится в 23: 59

Я понимаю, как создать цикл в выпадающем списке, который будет выводить 0-10

<select><?php for($i=0; $i<10; $i++){echo "<option>" . $i . "</option>";} ?> </select>

и я понимаю, как вывести время в формате ЧЧ: ММ

<option><?php echo date('h:i', $supportrequest->startTime); ?</option>

Но я не могу понять, как сделать комбинацию из двух, поскольку я не уверен, какими должны быть параметры цикла for

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Используя DatePeriod, это будет выглядеть так:

<?php
$begin = (new DateTime())->setTime(0,0,0);  // create start point
$end = (new DateTime())->setTime(23,59,59); // create end point
$interval = new DateInterval('PT1M'); // set the interval to 1 minute
$daterange = new DatePeriod($begin, $interval ,$end);  // create the DatePeriod

echo "<select>";
foreach($daterange as $date){ // loop through that period
    echo "<option value='".$date->format("H:i") . "'>".$date->format("H:i")."</option>\n";
}
echo "</select>";

Использование этих классов упрощает изменение, если вы, например, f.e. хотите получать каждые 30 минут или использовать другой формат вывода.

0 голосов
/ 05 ноября 2018

Вы действительно хотите иметь выпадающий список с тысячей, четырьмя и сорока значениями опций (24 * 60 = 1440)? Я думаю, что было бы лучше иметь два <select> элемента. Вы можете сделать так, чтобы они сидели рядом друг с другом с : в центре, если вы хотите сохранить 'H:m' внешний вид.

<select id="hours">
<?php
for ($h = 0; $h < 24; $h++) printf("<option value=\"$h\"" . (!$h ? " selected" : "") . ">%02d</option>", $h);
?>
</select>
<select id="minutes">
<?php
for ($m = 0; $m < 60; $m++) printf("<option value=\"$m\"" . (!$m ? " selected" : "") . ">%02d</option>", $m);
?>
</select>
0 голосов
/ 05 ноября 2018

Преобразовал комментарий Мукью в ответ:

<select>
<?php 
  for($h=0; $h<24; $h++){
    for($i=0; $i<60; $i++){
      $time = date('h:i',strtotime($h.':'.$i));
      echo "<option>".$time."</option>";
    } 
  } 
?>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...