2016-09-16 4 views
1

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.

enter image description here

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.

+0

Statt 'date (" H: i ", $ seconds_start);' try 'date (" H: i ", $ today + $ seconds_start) ; ' –

+2

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 –

Antwort

1
$timediff = 3600; 

$paris_00_time = strtotime(date('Y-m-d '.'00:00')); 

$paris_selected_time = $paris_00_time+1800; 

$my_time = date('Y-m-d H:i:s',$paris_selected_time-$timediff); 

print_r($my_time); 

können Sie erklären $timediff=3600; (1 Stunde)

$paris_00_time = strtotime(date('Y-m-d '.'00:00'));

nachdem jemand das Datum wählen (zB: [1800] => 00:30) und eingereicht wird Ihnen das Datum bearbeiten können

$paris_selected_time = $paris_00_time+1800;

$my_time = date('Y-m-d H:i:s',$paris_selected_time-$timediff);

Ausgabe: 2016-09-15 23:30:00

1

Ich weiß nicht wirklich wo, aber Sie können Ihre Zeitzone ändern. Suchen Sie nach PHP timezone und Sie werden von der offiziellen Website eine Liste mit allen möglichen Ländern finden. Sie müssen nur eine Variable mit dem Land/Stadt, die Sie benötigen, und das war es. Ich weiß nicht, ob Sie es in Ihrem PHP-Skript tun können oder Ihre Konfigurationsdateien auf dem Server ändern müssen.

+0

Hier sind die Links Ihre Antwort fehlt. http://php.net/manual/en/function.date-default-timezone-set.php, http://php.net/manual/en/timezones.php – chris85

Verwandte Themen