Wie kann ich in einer IF Abfrage vergleichen ob eine Uhrzeit zwischen zwei anderen Uhrzeiten liegt.
Aktuelle Uhrzeit ($Zeit) liegt zwischen 1:00 ($Abdimzeitpunkt) und 6:00 ($Sonnenaufgang):
If (($Bewegung == true) and ($Helligkeitswert < 60) and ($Zeit > $Abdimmzeitpunkt) and ($Zeit < $Sonnenaufgang))
Aber wenn die Zeitspanne nun über die Tagesgrenze hinaus geht, Uhrzeit X liegt zwischen 23:00 und 6:00, kann ich ja so nicht mehr abfragen. Hier wäre 0:30 zwar noch zwischen 23:00 und 6:00 aber nicht mehr > 23:00! Wie löse ich das in dem Fall?
Und wie kann ich abfragen ob sie das nicht tut? Gibt es da eine verneinende Abfrage?
würde für die Zeit zwischen 23 und 6 Uhr nicht ein OR genügen?
If (($Bewegung == true) and ($Helligkeitswert < 60) and (($Zeit > Abdimmzeitpunkt) OR ($Zeit < $Sonnenaufgang)))
Dann würde z.B. 23:15 Uhr größer Abdimmzeit sein oder z.B. 00:30 Uhr kleiner Sonnenaufgang sein.
Aber z.B. 07:15 Uhr größer Sonnenaufgang und kleiner Abdimmzeit sein, also ausserhalb des Zeitfensters…
Wenn das nicht reicht eine Aufteilung auf mehrere Zeitfenster und Hilfsvariable:
$anschalten=0; // grundsätzlich nicht anschalten
if (($Bewegung == true) and ($Helligkeitswert < 60) AND ($zeit>$vorMitternacht) AND ($zeit<=$Mitternacht))
{anschalten=1;}
elseif (($Bewegung == true) and ($Helligkeitswert < 60) AND ($zeit>$Mitternacht) AND ($zeit<$Sonnenaufgang))
{anschalten=1;}
elseif (($Bewegung == true) and ($Helligkeitswert < 60) AND ($zeit>$frühstückanfang) AND ($zeit<$frühstückende))
{anschalten=1;}
if ($anschalten==1)
{dann mach das was Du willst} //und hier dann das was Du eigentlich machen willst...
folgenden Script-Teil benutze ich in meinem Heizungsscript, um zu schauen, ob gerade eine definierte Zeit ist, an der ich etwas an der Heizung ändern will:
Eine Abfrage mit „or“ ist wohl die schlankeste Lösung. Bis jetzt läuft es ganz gut, jetzt muss meine Freundin nur noch mal ein paar Tage Betatester spielen