Как изменить время выпадающего списка в php?

#php #time #drop-down-menu

#php #время #выпадающее меню

Вопрос:

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

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

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

12:30 вечера — 1:00 вечера 1:00 вечера — 1:30 вечера 1:30 вечера — 2:00 вечера 2: 00 вечера — 3:30 вечера 2: 30 вечера — 3:00 вечера 3:00 вечера — 3:30 вечера 3:30 вечера — 4:00 вечера 4: 00 вечера — 4:30 вечера 5:00 вечера — 5:30 вечера 5:30 вечера — 6:00 вечера

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

Ответ №1:

Используйте 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 получасовых интервала вперед.

Комментарии:

1. должен ли первым параметром быть интервал, который мы используем сейчас, или сейчас 1,5 часа? в своем вопросе вы указываете это обоими способами

2. Спасибо! отлично! но мне нужно время начала 12: 30 вечера — 1: 00 вечера и время окончания 5: 30 вечера — 6:00 вечера? как это сделать? Большое вам спасибо!

3. я думал, что время начала либо сейчас, либо сейчас 1,5 часа? $timeAtHalfHour = strtotime('12:30 pm') если это то, что вы хотите

4. Привет, Джон, как создать два выпадающих меню, чтобы второе выпадающее меню было выбрано раньше, чем два часа в первом меню? например, у меня есть выбор 12:30pm-1: 00pm в первом выпадающем списке, а первое доступное время во втором выпадающем списке — 2:30 pm-3:00pm. Как это сделать? у тебя есть пример этого? Спасибо!

5. я не совсем уверен, к чему вы клоните, но то, что вы описываете, совсем не сложно. его всего два <select> с соответствующим набором <option> символов вместо одного. обратите внимание, что для значений я просто произвольно ввожу целые числа. в зависимости от того, какая у вас следующая страница (та, которая выполняет действие формы при ее отправке), это может быть то, что вы хотите, а может и не быть. проверьте опубликованную мной правку

Ответ №2:

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

Комментарии:

1. Какая часть? Вы можете посмотреть функции и как они работают на php.net и используйте их в своем приложении, я привел псевдопример.