我有一个时间列表,我想将其放入下拉菜单中

时间:2017-11-07 20:45:58

标签: php html select dropdown

对此有点新鲜,如果我问一个愚蠢的问题,那就很抱歉。

我已经制作了一个时间列表,我必须将其放入选择菜单中。 有点像this

我实际上希望我的列表是从16:00到01:45或02:00而不是00:00-01:45& 16:00-23:45,但我不知道怎么做。 然后第二件事是我无法将这个列表变成

<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); 
    }
}
?>

2 个答案:

答案 0 :(得分:0)

如果您想在16:00开始并且转到1:45,您可以在第一个for循环$t = ($i + 16) % 24内使用这样的模数,然后在其他循环内使用此变量而不是$ i。如果你想把它放在一个select元素中,你需要用<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>";

答案 1 :(得分:0)

您可以使用mktime()生成date()所需的时间来处理密钥和下拉列表的值。

所以,例如,

$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);