Как я могу заполнить выбранный список со временем? - PullRequest
0 голосов
/ 28 марта 2012

Я хочу заполнить список выбора таким образом, чтобы он увеличивался каждые 5 минут, начиная с 00:00 до 23:55. Мне нужно сделать это и во время UNIX.

Ниже приведено то, что я сделал, но я только что понял, что выполнение strtotime("18:00") на самом деле не дает мне этот час конкретно. У меня также есть список выбора дат, например, дата может быть «Вт 6 марта 2012» (с форматом unix: 1330992000). Я хочу иметь возможность взять два выбранных значения, а затем добавить две метки времени Unix вместе, чтобы я мог вставить их в базу данных. Например, пользователь выбирает время 17:00, которое даст мне 1332950400 (я знаю, что это неправильно), а затем дату Вт 6 марта 2012 года, которая даст мне 1330992000. Затем я хочу добавить две метки времени вместе, чтобы получить 18:00 Вт 6 марта 2012 года в формате метки времени Unix.

public function timeSelectList()
{
    //using actual unix time instead of strtotime to save it from having to call the function each time. 
    $startTime = 1332889200; //strtotime('00:00');
    $endTime =  1332975300; //strtotime('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">';
    //populates the select list with the starting date of the course up to the next six months
    while($now <= $endTime)
    {
        if($now == 1332950400)// strtotime('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 == 1332954000)//strtotime('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;
}

1 Ответ

0 голосов
/ 28 марта 2012

Немного неясно, как выглядит полученная форма. Тем не менее, в этих ситуациях легче сделать строковую математику , чем дату математику .

Например, добавьте дату и время вместе в виде строки, а затем определите ее метку времени.

$date_string = $date . ' ' . $time; // '2012-03-28 18:00'
$timestamp = strtotime($date_string);

Примечание: Вы, конечно, захотите выполнить некоторую проверку или форматирование строки заранее. Но вышесказанное должно быть последним, что вам нужно.

...