2012-03-28 11 views
0

Ich möchte eine Auswahlliste so auffüllen, dass sie für jeweils 5 Minuten von 00:00 bis 23:55 inkrementiert wird. Ich muss dies auch in UNIX-Zeit tun.Wie kann ich eine Auswahlliste mit der Zeit füllen?

Unten ist, was ich getan habe, aber ich habe gerade festgestellt, dass strtotime("18:00") nicht wirklich mir diese Stunde speziell gibt. Ich habe auch eine Auswahl von Daten, zum Beispiel ein Datum kann "Di 6 März 2012" (mit dem Unix-Format sein:). Ich möchte in der Lage sein, die zwei ausgewählten Werte zu nehmen und dann die zwei Unix-Zeitstempel zusammenzufügen, damit ich sie in die Datenbank einfügen kann. Zum Beispiel wählt ein Benutzer die Zeit 17:00, die mir 1332950400 geben wird (ich weiß, dass das falsch ist) und dann das Datum Di 6. März 2012, das mir geben wird. Ich möchte dann in der Lage sein, die zwei Zeitstempel zusammen zu addieren, so dass ich 18:00 Uhr am 6. März 2012 im Unix-Zeitstempel-Format bekomme.

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; 
} 

Antwort

0

Es ist ein wenig unklar, wie die resultierende Form aussieht. Dennoch ist es in diesen Situationen einfacher string math als date math.

Fügen Sie beispielsweise Datum und Uhrzeit zusammen als Zeichenfolge hinzu, und bestimmen Sie dann den Zeitstempel.

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

Hinweis: Sie werden natürlich wollen vorher eine Validierung oder String-Formatierung zu tun. Aber das obige sollte das letzte Stück sein, das du brauchst.

Verwandte Themen