使用php在下拉列表中显示24小时

时间:2013-09-05 13:39:05

标签: php

我正在尝试为显示时间创建一个下拉列表。我的Option标签应该是这样的

<option value="1">01.00AM</option>
<option value="2">02.00AM</option>
<option value="3">03.00AM</option> and so on 

那么我能否知道有一种快速的方法来创建数组而不是在选项标记中键入每个小时?

注意:AM和PM应根据时间显示。

我尝试使用此代码,但它对我不起作用..

<select>
<?php for($i = 0; $i < 24; $i++): ?>
  <option value="<?= $i; ?>"><?= $i % 12 ? $i % 12 : 12 ?>:00 <?= $i >= 12 ? 'pm' : 'am' ?></option>
<?php endfor ?>
</select>

5 个答案:

答案 0 :(得分:7)

Fresh Prince删除答案的一个小变种

我给予Fresh Prince of SO大部分功劳,但是由于他删除了原来的答案,我发布了一个没有混合的echo标签和奇怪的连接的变体。

<select id='time'>
<?php for($i = 1; $i <= 24; $i++): ?>
    <option value="<?= $i; ?>"><?= date("h.iA", strtotime("$i:00")); ?></option>
<?php endfor; ?>
</select>

注意:我使用短回声标记<?=,因为原始帖子使用了它们。如果你正在编写需要支持旧版本PHP的可移植代码,我建议用<?php echo替换它们。

输出格式

此脚本的输出格式为:

<select id='time'>
    <option value="1">01.00AM</option>
    <option value="2">02.00AM</option>
    ...
    <option value="23">11.00PM</option>
    <option value="24">12.00AM</option>
</select>

This is a live demo

答案 1 :(得分:5)

为什么不使用strtotimedate

date("h.iA", strtotime($i . ":00"))

See a demo


将它用于你的例子,

<?php 
    for($i = 0; $i < 24; $i++):
        echo "<option value=\"$i\">" . date("h.iA", strtotime($i . ":00")) . "</option>\n";
    endfor;
?>

可替换地,

<?php
    for($i = 0; $i < 24; $i++, $d = date("h.iA", strtotime($i . ":00:00"))) {
       echo "<option value=\"$i\">$d</option>\n";
    }
?>

最后,

for($i = 0; $i < 24; print "<option value=\"$i\">" . date("h.iA", strtotime($i . ":00:00")) . "</option>\n", $i++);

See a demo

答案 2 :(得分:1)

不需要所有那些凌乱的php标签。

for ($i=0; $i<24; ++$i) {
  $t = date("H.iA", strtotime($i.":00:00"));
  echo '<option value="'.$i.'">'.$t.'</option>';
}

答案 3 :(得分:1)

查看以下演示:http://phpfiddle.org/main/code/8y7-hut In-sprintf格式化功能用于填充前导0。

以下是使用的代码:

<select>
<?php for($i = 0; $i < 24; $i++): ?>
    <option value="<?php echo $i+1; ?>"><?php printf('%1$02d.00',(($i+1) > 12)? ($i+1)-12 : $i+1)?><?php echo (($i < 12)? 'AM' : 'PM'); ?></option>
<?php endfor ?>
</select>

答案 4 :(得分:0)

试试这个:

$start = '12:00AM';
$end = '11:59PM';
$interval = '+1 hour';

// $interval = '+30 minutes';
// $interval = '+15 minutes';

$start_str = strtotime($start);
$end_str = strtotime($end);
$now_str = $start_str;

echo '<select>';
while($now_str <= $end_str){
    echo '<option value="' . date('h:i A', $now_str) . '">' . date('h:i A', $now_str) . '</option>';
    $now_str = strtotime($interval, $now_str);
}
echo '</select>';

Here's一个有效的例子。