Na ja, so funktioniert es wenigstens, aber ganz ehrlich, wie kompliziert willst Du es denn noch machen?
ist perDefinition immer gleich min, das gleiche gilt entsprechend für den max-Ausdruck, Du kannst also stattdessen schreiben
Code: Alles auswählen
if(min <= now().getHourOfDay && max > now.getHourOfDay)
was (bis auf die Vertauschungen) meinem Code entspricht.
Ich denke, was Du meinst, ist folgendes Konstrukt:
Code: Alles auswählen
if(now.isAfter(now.withTimeAtStartOfDay.plusHours(6).plusMinutes(30).plusSeconds(15)) && now.isBefore(now.withTimeAtStartOfDay.plusHours(18).plusMinutes(45).plusSeconds(35)))
Ich hab ein Gegenbeispiel:
trifft auf den Zeitraum zwischen 6 Uhr und 22 Uhr zu. das heißt, man kommt ohne die und-Verknüpfung aus. Funktioniert natürlich genauso auch minutengenau oder gar sekundengenau.
Rules werden bei ihrer ersten Ausführung compiliert, das bedeutet das aus einem statischen Ausdruck wie z.B.
Code: Alles auswählen
if(now.getSecondOfDay > 6*60*60+30*60+15 && now.getSecondOfDay < 18*60*60+45*60+35)
dieser Ausdruck wird:
Code: Alles auswählen
if(now.getSecondOfDay > 23415 && now.getSecondOfDay < 67535)
In der Rule steht aber immer noch der Term, aus dem man leicht ersehen kann, dass die Bedingung zwischen 06:30:15 und 18:45:35 (exklusive) gültig ist.
Wahlweise kann man natürlich auch statt 60*60 gleich 3600 schreiben, und ein kleiner Kommentar an der Seite hilft, sich später daran zu erinnern, was man da rechnet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet