Autor Thema: Wie kann man Uhrzeiten eleganter vergleichen?  (Gelesen 8999 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18513
Antw:Wie kann man Uhrzeiten eleganter vergleichen?
« Antwort #15 am: 28 Februar 2017, 23:12:59 »
am einfachsten den Doppelpunkt weg-regexen und dann 2255 mit 2200 vergleichen :)
-----------------------
Möchte man beruflich "etwas mit Menschen" machen, ohne etwas mit deren Dummheit zu tun haben zu müssen,
bleibt eigentlich nur der Beruf des Bestatters übrig.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21328
Antw:Wie kann man Uhrzeiten eleganter vergleichen?
« Antwort #16 am: 01 März 2017, 00:45:40 »
weil es mit dem : strings sind und > nur den zahlen teil bis zum : vergleicht. du solltest auch eine warnung im log dazu sehen.

wenn deine stunden immer zwei stellig sind funktioniert auch ein string verglich mit gt. wenn nicht: wie vorgeschlagen den : entfernen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, …

https://github.com/sponsors/justme-1968

Offline efyzz

  • Jr. Member
  • **
  • Beiträge: 90
Antw:Wie kann man Uhrzeiten eleganter vergleichen?
« Antwort #17 am: 01 März 2017, 12:45:28 »
Ah, ok...
Danke!
RaspberryPi3B, Jessie Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Offline rabehd

  • Hero Member
  • *****
  • Beiträge: 1365
Antw:Wie kann man Uhrzeiten eleganter vergleichen?
« Antwort #18 am: 01 März 2017, 13:29:08 »
Wenn auch nachträglich.
Die ursprüngliche Frage habe ich so gelöst:
([{sunset_abs("REAL")}]) (set FS_2 on) 
DOELSEIF ([23:22|01234] and (ReadingsVal("BaWue","tomorrow","") eq "none") and (Value("Party") eq "keine")) ({LichterAus()})
DOELSEIF ([00:24|67] and (Value("Party") eq "keine"))({LichterAus()})
DOELSEIF ([00:24] and (ReadingsVal("BaWue","tomorrow","") ne "none") and (Value("Party") eq "keine")) ({LichterAus()})
DOELSEIF ([04:04] and (Value("Party") eq "läuft")) ({LichterAus()})
DOELSEIF ([06:30|67] and (!isday()) ) (set FS_2 on) 
DOELSEIF ([05:25|8] and (!isday()) ) (set FS_2 on)
DOELSEIF ([{sunrise_abs("REAL",0,"05:26","07:08")}|8]) (set FS_2 off) 
DOELSEIF ([{sunrise_abs("REAL",0,"06:31","08:48")}|67]) (set FS_2 off)
Dabei wird Sonnenstand, Wochentag, Feiertag und Dummy Party berücksichtigt.

Zeiten vergleiche ich in dem ich das Ergebnis einer Funktion "Zeit zu UnixZeit" benutze. Der Vorteil ist, dass man damit rechnen kann und auch das Datum berücksichtigt wird.
Auch funktionierende Lösungen kann man hinterfragen.