我正在尝试为显示时间创建一个下拉列表。我的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>
答案 0 :(得分:7)
我给予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>
答案 1 :(得分:5)
date("h.iA", strtotime($i . ":00"))
将它用于你的例子,
<?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++);
答案 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一个有效的例子。