Как мога да попълня избран списък с време?

Искам да попълня избран списък, така че да се увеличава за всеки 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;
}

person Johnathan Au    schedule 28.03.2012    source източник


Отговори (1)


Малко не е ясно как изглежда получената форма. Независимо от това, в тези ситуации е по-лесно да се направи низова математика отколкото датна математика.

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

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

Забележка: Вие, разбира се, ще искате да направите известна проверка или форматиране на низове преди това. Но горното трябва да е последното парче, от което се нуждаете.

person Jason McCreary    schedule 28.03.2012