Как создать выпадающее время перечисленных изменений в php? - PullRequest
1 голос
/ 07 апреля 2011

Я хочу изменить время раскрытия списка.Времена начинаются через 1,5 часа после текущего времени.Итак, если текущее время - 10:31, то первое доступное время - 12:30 - 1: 00

1002 *, если текущее время - 14:31, первое доступное время - 2:30 - 3:00:00.

вот раскрывающийся список

12: 30 - 13:00, 13:00 - 13:30, 13:30 - 14:00, 14:00 - 15:30, 14:30 -15:00 15:00 - 15:30 15:30 - 16:00 16:00 - 16:30 17:00 - 17:30 17:30 - 18:00

Любая помощь?Спасибо!Помощь очень ценится!

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Используйте функции time и date с округлением до получаса.

$timeAtHalfHour = time() - ( time() % (60*30));
//$timeAtHalfHour += 90*60;  //IDK IF YOU WANT THIS?
$endTime = strtotime('6:00 pm');
$numIntervals = ($endTime - $timeAtHalfHour) / (60*30);
echo "<select name='timeInterval'>";
$strTime1 = date('h:iA', $timeAtHalfHour);
foreach(range(1,$numIntervals) as $cur)
{
   $thisTime = $timeAtHalfHour + 30*60*$cur;
   $strTime2 = date('h:iA', $thisTime);
   echo "<option value=$cur>$strTime1 - $strTime2 </option><br />";
   $strTime1 = $strTime2;
}
echo "</select>";

РЕДАКТИРОВАТЬ

$timeAtHalfHour = time() - ( time() % (60*30));
//$timeAtHalfHour += 90*60;  //IDK IF YOU WANT THIS?
$endTime = strtotime('6:00 pm');
$numIntervals = ($endTime - $timeAtHalfHour) / (60*30);
$strTime1a = date('h:iA', $timeAtHalfHour); $strTime2a = date('h:iA', $timeAtHalfHour + 4*60*30);
$optionStr1 = ''; $optionStr2 = '';
foreach(range(1,$numIntervals) as $cur)
{
   $thisTime1 = $timeAtHalfHour + 30*60*$cur; $thisTime2 = $thisTime1 + (60*30*4);
   $strTime1b = date('h:iA', $thisTime1); $strTime2b = date('h:iA', $thisTime2);
   $optionStr1 .= "<option value=$cur>$strTime1a - $strTime1b </option><br />";
   $optionStr2 .= "<option value=$cur>$strTime2a - $strTime2b </option><br />";
   $strTime1a = $strTime1b; $strTime2a = $strTime2b;
}
echo "<select name='firstTime'>$optionStr1</select>";
echo "<select name='secondTime'>$optionStr2</select>";

Это просто во многом делает параллель второй разв первый раз, всего 4 полчаса впереди.

0 голосов
/ 07 апреля 2011

Что вы можете сделать, это: - Для каждого периода времени, указанного в раскрывающемся списке, рассчитайте метку времени Unix (strtotime()) времени начала. Затем вы рассчитываете текущую метку времени (time()). Затем удалите все периоды времени, где временная метка времени запуска меньше 90 * 60 секунд от текущего времени: if($curTime+(90*60) > $startTimestampOfPeriod){}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...