2016-10-02 3 views

Antwort

0

Wenn Sie nicht diese Art der Sache hartkodierte mit nichts dagegen, Sie so etwas wie versuchen könnten:

$is_valid = 
    (date('D') === 'Thu' && date('H') >= 15) || 
    (date('D') === 'Fri' && date('H') < 16); 

Es ist ein sehr grobes Beispiel, aber könnte Ihnen einige Ideen geben, wie Sie es implementieren. Wenn Sie es jetzt nicht wollen, können Sie die Datumsfunktion mit einem Unix-Timestamp als zweitem Argument versehen, aber es wird sehr schnell hässlich.

Alternativ könnten Sie ein wenig mehr Flexibilität erhalten, indem den eingebauten String Bauer (falls Sie gehen aus dem Fenster vom Benutzer konfigurierbar machen) bei einer kleinen Leistung kostete

$string_to_check = 'now'; 
$string_start = 'thursday 15:00'; 
$string_end = 'friday 16:00'; 

$subject = new \DateTime($string_to_check); 
$end = new \DateTimeImmutable($string_end); 
//need to calculate end first for the relative modification 
$start = $end->modify(sprintf('previous %s', $string_start)); 

$is_valid = ($start < $subject && $subject < $end); 

ich eine Einschränkung sehen dass es nicht funktioniert, wenn das Fenster am selben Tag startet und endet, obwohl das leicht zu beheben ist - Sie können das tun, wenn Sie müssen.

Verwandte Themen