对此有点新鲜,如果我问一个愚蠢的问题,那就很抱歉。
我已经制作了一个时间列表,我必须将其放入选择菜单中。 有点像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);
}
}
?>
答案 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);