negativ fall aktZeit: 6:00 Uhr - zeitplan 20:00 bis 5:00
dann entweder aktZeit größer als 20 oder 5:00 ist größer als aktZeit --> beides false passt
#####################
positiv fall aktZeit: 3:00 Uhr - zeitplan 20:00 bis 5:00
dann entweder aktZeit größer als 20 oder 5:00 ist größer als aktZeit --> erstes false , zweites true -> passt
##################
positiv fall aktZeit: 22:00 Uhr - zeitplan 20:00 bis 5:00
dann entweder aktZeit größer als 20 oder 5:00 ist größer als aktZeit --> erstes true, zweites false -> passt
Nachtrag: Hab mir das gerade nochmal angesehen, wie ich das in meinen Skripten mache. Solange der Zeitraum zusammenhängend über die 00-Uhr-Grenze verläuft, kann man mit der ODER Verknüpfung arbeiten.
Wert ist dann >20 oder <6. Bei Zeiträumen vor 24.00 Uhr geht’s dann eben nur mit UND-Verknüpfung >20 && <23.
Aber wenn man das vorher weiß, ist das doch eigentlich kein Problem, oder sind die Von/Biswerte in Abhängigkeit von irgendwas flexibel?
Falls nur die Angaben der Anfangs- und Endstunde für den Zeitraum gegeben sind,
sollte es so funktionieren:
$jetzt = time();
$stunde_beginn=22; // Extremes Beispiel:
$stunde_ende=21; // das Zeitfenster reicht mit diesen Zahlen von 22 Uhr bis 21 Uhr Folgetag
$beginn = mktime($stunde_beginn,0,0,0,0,0);
$ende = mktime($stunde_ende,0,0,0,0,0);
$delta = $ende - $beginn;
/* Falls die Endstunde kleiner ist als die "Beginnstunde"
kann das nur bedeuten, dass das Zeitende am Folgetag liegt,
elso einfach 24 Stunden dazu addieren: */
if ($delta < 0) {
$delta = $delta + 24*3600;
}
$zeit_ende = $beginn + $delta;
/* Die Überprüfung , ob die aktuelle zeit im Zeitfenster liegt,
erfolgt dann an "Beginnstunde" und "Beginnstunde" + Zeitunterschied */
if ($beginn <= $jetzt AND $jetzt <= $zeit_ende ) {
// Was immer passiern soll, wenn das Script im Zeifenster aufgerufen wurde.
}
Ich habe zu dem Code noch ganz viele Ideen, die ich in nächster Zeit umsetzen werde, so das man das Script dann durchaus als „Jahreszeitschaltuhr“ bezeichnen könnte.
Ich werde den Code entsprechend veröffentlichen.
geplant sind im Moment noch folgende Dinge:
Schaltzeiten in Abhängigkeit vom Wochentag
z.B. - Montag von 10:00 - 12:00, Wochentags von 10:00 - 12:00
- an Wochentagen von 10:00 - 12:00
- am Wochenende von 10:00 - 12:00
Feiertage sollen da auch noch mit rein
Falls noch jemand Ideen und Anregungen hat, ich bin für allen „Quatsch“ offen, sofern es meine Programmierkenntnisse zulassen…
Das lässt sich noch etwas weiter automatisieren ;).
Der erste Advent lässt sich ausrechnen und der 06.01. ist ja bekannt :). Und dann „ein wenn draußen dunkel“ und aus „nach Mitternacht“ oder „wenn danach noch Licht an ist, dann später“.
ich muss mich leider mal hier hinten ranhängen an den Thread. Ich habe in meiner ersten Version mit && (UND) zwischen den Uhrzeiten gearbeitet. Ergebnis war halt, dass um 22:00 Uhr brav auf „AUS“ gestellt wurde, aber um 0:00 Uhr wieder auf „EIN“.
Habe dann das && durch || (ODER) ersetzt. Auch das funktioniert nicht. Dann schaltet er sogar vor 22:00 Uhr auf „AUS“. Das verstehe ich nicht recht. In der Bedingung steht doch eindeutig das die aktuelle Zeit >= Beginn sein muss.
Irgendwie bin ich da an meiner Grenze des „nachvollziehbaren“ angelangt. Hab Ihr eine Idee?
<?
$Anwesend = GetValueBoolean(15336);
$jetzt = time();
$begin = mktime(22,0,0,0,0,0);
$ende = mktime(05,0,0,0,0,0);
if (($Anwesend == true) && ($begin <= $jetzt || $jetzt <=$ende)) //Wenn Cheffe im Haus ist UND die aktuelle Uhrzeit zwischen 22:00 und 05:00 Uhr ist, dann schalte AUS....sonst bla bla
{
SetValueBoolean(59859, false);
}
else
{
SetValueBoolean(59859, true);
}
?>
Danke im Voraus…
vG Arne
EDIT:
Nicht das ich falsch verstanden werde. Ich erwarte jetzt keine Lösung, dazu gibt es genug Ideen und Ansätze hier in diesem Thread. Es geht mir einfach um das Verständnis, da ich nicht nachvollziehen kann warum die Bedingungen nicht funktionieren. Vielleicht ist meine Schreibweise im Script ja auch falsch oder fehlerhaft und ich sehe es einfach nicht.