Wie Frageich eine Uhrzeit zwischen 23:00 und 6:00 mit IF ab?

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?

Hi,

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...


Gruß
Olaf

Hi ,

ich bin auch neu im Thema PHP, hab aber mal in einem meiner Scripte gekramt. Ich löse das so (vielleicht noch mit Optimierungspotenzial :-)):


########################## Konfig ##############################################
$sunset = (substr(getValue(47035 /*[Astro-Script\astro\Sonnenaufgang]*/),0,2).substr(getValue(47035 /*[Astro-Script\astro\Sonnenaufgang]*/),3,2));
$sunrise = (substr(getValue(13450 /*[Astro-Script\astro\Sonnenuntergang]*/),0,2).substr(getValue(13450 /*[Astro-Script\astro\Sonnenuntergang]*/),3,2));
########################## Konfig Ende #########################################

if ((date("Hi") > $sunset) || (date("Hi") < $sunrise)) // wenn Zeitpunkt nach Sonnenuntergang oder vor Sonnenaufgang
.
.

Hi,

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:


	$now = time();
	$timeStart = mktime($actualZeitStartHour,$actualZeitStartMinute);
	$timeStop = mktime($actualZeitStopHour,$actualZeitStopMinute);
	// Gibt den Timestamp für: 2006-04-05T01:02:03+00:00
	// mktime(1, 2, 3, 4, 5, 2006)

	if ($now > $timeStart && $now < $timeStop) {
		tue irgendetwas
	}


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 :wink:

Besten Dank

Hm das verstehe ich leider nicht.

Also meine Wandtaster schalten das Licht ohne IPS ein/aus.

Wie kann ich das script einbinden ?

was ist das für ein Wandtaster? -> ist der schon in IPS eingebunden?

Nachtrag: @drapple: ich glaube, du bist im falschen Thread …:rolleyes: