【问题标题】:How to loop through time in select box PHP如何在选择框PHP中循环时间
【发布时间】:2018-11-05 10:16:55
【问题描述】:

我有一个选择下拉列表,我想以 HH:MM 格式列出时间,间隔为 1 分钟。所以列表将从 00:00 开始,到 23:59 结束

我了解如何在选择下拉菜单中创建一个循环,输出 0-10

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

我了解如何将时间输出为 HH:MM

&lt;option&gt;&lt;?php echo date('h:i', $supportrequest-&gt;startTime); ?&lt;/option&gt;

但我不知道如何将两者结合起来,因为我不确定 for 循环的参数应该是什么

【问题讨论】:

  • 您好,您如何制作 2 个循环,一个用于小时,一个用于分钟? 0-23 表示小时,0-59 表示分钟。
  • 结帐DatePeriod
  • 如果你只想输出 0 到 23 和 0 到 59 之间的数值,为什么不直接使用简单的 for 循环呢?
  • 您需要两个循环 - 一个用于几小时,一个用于几分钟。将值存储为 24 小时制,格式并为用户显示为上午/下午,除非他们习惯于 24 小时制

标签: php html select time dropdown


【解决方案1】:

使用 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 分钟有一次,或者需要不同的输出格式。

【讨论】:

    【解决方案2】:

    您真的想要一个包含一千四百四十个选项值 (24 * 60 = 1440) 的下拉菜单吗?我认为最好有两个&lt;select&gt; 元素。如果您想保持 '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>
    

    【讨论】:

      【解决方案3】:

      将Mukyuu的评论转换为答案:

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 1970-01-01
        • 2023-01-10
        相关资源
        最近更新 更多