2016-03-31 10 views
0

Ich verwende eine kurze Reihe von if/else if-Anweisungen in PHP. Innerhalb dieser Aussagen ich eine Bedingung zu überprüfen, ob es ein bestimmtes Datum wie die folgende ist:Formatierte Daten in PHP IF-Anweisung

$timezone  = date_default_timezone_set('America/Chicago'); 
    $TheDate  = date("F j, Y, g:i a"); 
    if ($TheDate >= "March 30, 2016, 9:00 pm" && $TheDate <= "March 30, 2016, 9:59 pm") { 
echo "this" 
} 

else if ($TheDate >= "April 1, 2016, 10:00 am" && $TheDate <= "April 1, 2016, 4:00 pm") { 
echo "that" 
} 

Ich habe keine Ahnung, was los ist, aber ich kann das Datum nicht ausstrecken über die aktuelle Stunde, wenn ich das tue, zeigt meine else Aussage von echo "".

Zum Beispiel, wenn ich eine Aussage von wenn die Daten sind> = 30. März 2016, 10.00 Uhr UND weniger als oder gleich 30. März 2016, 12.00 Uhr, dies funktioniert nicht, Was ich anzeigen möchte, wird nicht angezeigt.

Wenn ich jedoch> = 30. März 2016, 10.00 Uhr UND weniger als oder gleich 30. März 2016, 10:55 Uhr schreiben würde, funktioniert das.

Irgendeine Idee, wie ich das beheben kann?

+1

entweder verwenden Unix-Zeitstempel oder Datetime-Objekte Vergleiche zu machen, nicht Datum Strings – Ghost

Antwort

2

Ich denke, was Sie suchen, ist strtotime.

<?php  
date_default_timezone_set('America/Chicago'); 

$TheDate = strtotime('March 30, 2016, 9:30 pm'); 

//$TheDate = strtotime(date('F j, Y, g:i a')); 
//$TheDate = time(); // This is much better for getting the current unix timestamp. 

if($TheDate >= strtotime('March 30, 2016, 9:00 pm') && $TheDate <= strtotime('March 30, 2016, 9:59 pm')) { 
    echo 'this'; 
} 
elseif($TheDate >= strtotime('April 1, 2016, 10:00 am') && $TheDate <= strtotime('April 1, 2016, 4:00 pm')) { 
    echo 'that'; 
} 
else { 
    echo 'neither'; 
} 
+0

Die Variable 'strtotime (' 30. März 2016, 09.30 Uhr '); Ist das nur die Formatierung? Was, wenn in einer anderen Aussage der Monat anders ist oder das Jahr? – Marlon

+0

Ich habe das da, um Ihnen zu zeigen, dass Sie die Datumsfunktion mit strtotime umkehren können, da Sie die Datumsfunktion in Ihrer Frage verwendet haben. – Brogan

+0

strtotime gibt einen Unix-Zeitstempel der Zeichenfolge zurück, die er zu interpretieren versucht. Das ist die Anzahl von Sekunden seit der Unix-Epoche, 1. Januar 1970. Die Zeitfunktion gibt den aktuellen Unix-Zeitstempel zurück. Siehe https://en.wikipedia.org/wiki/Unix_time – Brogan

Verwandte Themen