3

表示時間のドロップダウン リストを作成しようとしています。私のオプションタグは次のようになります

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

5 に答える 5

8

Fresh Princeの削除された回答のわずかな変形

私は SO の Fresh Prince にこれのほとんどの功績を認めていますが、彼が元の回答を削除したため、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 echo古いバージョンの PHP をサポートする必要がある移植可能なコードを作成している場合は、これらを に置き換えることをお勧めします。

出力フォーマット

このスクリプトからの出力形式は次のとおりです。

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

これはライブデモです。

于 2013-09-05T14:54:19.043 に答える
5

とだけを使用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++);

デモを見る

于 2013-09-05T13:41:26.297 に答える
1

これらの面倒な php タグは必要ありません。

for ($i=0; $i<24; ++$i) {
  $t = date("H.iA", strtotime($i.":00:00"));
  echo '<option value="'.$i.'">'.$t.'</option>';
}
于 2013-09-05T13:47:40.373 に答える
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>';

これが実際の例です。

于 2013-09-05T13:47:58.097 に答える