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