Ich versuche, eine Auswahlbox mit einer Liste von Zeitinkrementen von 00:00 bis 24:00 zu bekommen.PHP Event Buchung: Get Zeit in Schritten von 30 Minuten ist 1 Stunde
Die Zeitinkremente sind eine assoziative Array von Sekunden auf der Anzeigezeit wie folgt aus:
1800 => 00:30
dann, wenn jemand ein Datum auswählt, I Plan, um das Datum (zB 2016 konvertiert/9/16) in Sekunden und fügen dann die Zeit, die sie für diese Sekunden ausgewählt haben, hinzu, um die Datumszeit ihres Ereignisses zu erhalten.
Dazu erzeuge ich die Zeitinkremente wie folgt.
public function getIntervals($start_time = '00:00', $end_time = '24:00', $increments = '30')
{
$today = strtotime(date('Y/m/d', time())); // seconds for 2016/9/16
$seconds_start = strtotime(date('Y/m/d', time()) . ' ' . $start_time) - $today;
$seconds_end = strtotime(date('Y/m/d', time()) . ' ' . $end_time) - $today;
while ($seconds_start < $seconds_end) {
$intervals[$seconds_start] = date("H:i", $seconds_start);
$seconds_start = strtotime('+' . $increments . ' minutes', $seconds_start);
}
return $intervals;
}
Allerdings sind meine Zeitintervalle eine Stunde aus.
Wenn jemand '2016.09.17 bei 01.00 am Morgen' den Wert in Sekunden von 01:00 Uhr früh ist, ausgewählt ''.
Wenn ich '' zu strtoseconds ('2016.09.17') hinzufügen Ich werde get '2016.09.17 bei 00.00'.
Also hier bin ich, eine Stunde aus. Ich nehme an, dies ist aufgrund meiner Serverzeit auf paris + 1hr festgelegt, aber ich habe keine Ahnung, wie Sie es beheben.
Statt 'date (" H: i ", $ seconds_start);' try 'date (" H: i ", $ today + $ seconds_start) ; ' –
grundlegende Faustregel: Wenn Sie Datum Mathe tun, und Ihre Ergebnisse sind immer um genau ein Vielfaches von 60, ist es fast immer eine Zeitzone Problem –