Я пытаюсь создать два списка выбора, заполненных одинаковым временем. Это в основном для пользователя, чтобы выбрать время начала и время окончания. Я рассчитал их как мои времена:
$startTime = 0; //00:00
$endTime = 86100; //23:55'
$now = $startTime;
и затем я увеличиваю это так:
$now += 300;
, где 300 = 5 минут, поэтому я увеличиваю время на 5 минут в каждом цикле.
Поэтому мои списки выбора должны выглядеть так:
00:00
00:05
00:10
...
...
23:45
23:50
23:55
Все это работает, за исключением фактического печатного времени. Я получаю это:
1:00
1:05
...
...
00:45
00:50
00:55
Я подозреваю, что проблема в том, что мы сейчас находимся в Великобритании на летнем времени. Как я должен поэтому решить эту проблему?
Это мой настоящий метод:
public function timeSelectList()
{
$startTime = 0; //00:00
$endTime = 86100; //23:55'
$now = $startTime;
$startSelectList = '<label for="startSelect">Start Time</label><select name="startSelect" id="startSelect">';
$endSelectList = '<label for="endSelect">End Time</label><select name="endSelect" id="endSelect">';
while($now <= $endTime)
{
if($now == 61200)//17:00
{
$startSelectList .= '<option value="'.$now.'" selected="selected">'.date('H:i', $now).'</option>';
$endSelectList .= '<option value="'.$now.'">'.date('H:i', $now).'</option>';
}
else if($now == 64800)//18:00
{
$startSelectList .= '<option value="'.$now.'">'.date('H:i', $now).'</option>';
$endSelectList .= '<option value="'.$now.'" selected="selected">'.date('H:i', $now).'</option>';
}
else
{
$startSelectList .= '<option value="'.$now.'">'.date('H:i', $now).'</option>';
$endSelectList .= '<option value="'.$now.'">'.date('H:i', $now).'</option>';
}
$now += 300; //increment 5 minutes (300 seconds = 5 minutes
}
$startSelectList .= '</select>';
$endSelectList .= '</select>';
return $startSelectList.$endSelectList;
}