我正在尝试为显示时间创建一个下拉列表。我的选项标签应该是这样的
<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>
新鲜王子删除答案的轻微变体
我把这个功劳给了 Fresh Prince of SO,但由于他删除了他的原始答案,我发布了一个没有混合回声标签和奇怪串联的变体。
<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>
这是一个现场演示。
为什么不直接使用 strtotime
和 date
?
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++);
观看演示
查看以下演示: http://phpfiddle.org/main/code/8y7-hut In-Which-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>
不需要那些乱七八糟的 php 标签。
for ($i=0; $i<24; ++$i) {
$t = date("H.iA", strtotime($i.":00:00"));
echo '<option value="'.$i.'">'.$t.'</option>';
}
试试这个:
$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>';
这是一个工作示例。