2017-11-07 8 views
-3

これは初めてのことなので、私はばかな質問をしています。私はドロップダウンメニューに入れたい時間のリストを持っています

私は選択メニューに入れなければならない時間のリストを作成しました。 類似のようなthis

実際に私のリストは、00:00-01:45 & 16:00-23:45の代わりに16:00から01:45または02:00になりますが、どうすればよいかわかりません。 そして2つ目は、私が

<select> 

ドロップダウンメニューに

をこのリストを取得するために管理することができませんでしたこれは私がこれまで持っているコードです:

<?php 

$exclude = array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); 

function echo_datelist($i, $j) 
{ 
    $time = str_pad($i, 2, '0', STR_PAD_LEFT).':'.str_pad($j, 2, '0', STR_PAD_LEFT);    
    echo $time.'<br />'; 
} 

for ($i = 00; $i <= 23; $i++) 
{ 
    for ($j = 0; $j <= 45; $j+=15) 
    { 
     if (in_array($i, $exclude)) continue; 
     echo_datelist($i, $j); 
    } 
} 
?> 

答えて

0

の場合16:00に開始し1:45に移動すると、ループの最初のループのようにモジュラスを使用することができます$t = ($i + 16) % 24そして、この変数を他のループ内で$ iの代わりに使用します。選択した要素に配置する場合は、ループを囲む必要があります。<select></select>ここでは、探しているものの例を示します。

<?php 
$exclude = array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); 

function echo_datelist($i, $j) 
{ 
    $time = str_pad($i, 2, '0', STR_PAD_LEFT).':'.str_pad($j, 2, '0', STR_PAD_LEFT);    
    echo "<option value=" .$time. ">" . $time . "</option>"; // print in option 
} 
echo "<select>"; // this to enclose it all in a select element 
for ($i = 00; $i <= 23; $i++){ 
    $hour = ($i + 16) % 24; // this to start at 16:00 and wrap around to 1:45 
    for ($j = 0; $j <= 45; $j+=15) 
    { 
     if (in_array($hour, $exclude)) continue; 
     echo_datelist($hour, $j); 
    } 
} 
echo "</select>"; 
+0

どうもありがとう、それは私が探していたまさにそれです!さらにもう1つの質問が出てきました。メニューの下部に「02:00」を追加する方法もありますし、「できるだけ早く」のようなものをトップに追加する方法もありますか? –

+0

できます。必要な場所にオプションとして追加するだけです。たとえば、最初の ' 'の最後に' ";' –

+0

'を追加するには 'echo_datelist(2,0);'を追加することができます。 –

0

あなたは、キーとあなたのドロップダウンリストの値を処理するためにdate()とする時刻を生成しますmktime()を使用することができます。

ので、例えば、

$fromTime = mktime(16, 0, 0, 11, 8, 2017); // (11-08-2017 16:00:00) 
$toTime = mktime(2, 0, 0, 11, 9, 2017); // (11-09-2017 02:00:00) 

$i = 15; // every 15 mins 
$timePointer = $fromTime; 
while($timePointer <= $toTime) { 
    $timesList[$timePointer] = date('H:i', $timePointer); 
    $timePointer += $i * 60; // mult by 60 to convert to minutes 
} 

print_r($timesList); 
関連する問題