Ankündigung

Einklappen
Keine Ankündigung bisher.

"month" Funktion über Jahreswechsel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    "month" Funktion über Jahreswechsel

    Hallo,

    die Suchfunktion und das Handbuch gaben leider nichts her.

    Ich habe festgestellt, dass wenn ich die z.B.:
    Winterhalbjahr=month(01,11) and !month(01,04)
    als Variable verwende im Debugger immer "AUS" bekomme.
    Wenn ich aber:
    Winterhalbjahr=month(01,11) and !month(31,12)
    verwende, bekomme ich als Rückgabewert "EIN".

    Kann es sein, dass die Funktion "month" nicht über einen Jahreswechsel hinaus geht?

    Gruß
    Thomas

    #2
    Zitat von EIB_Lehrling Beitrag anzeigen
    das Handbuch gaben leider nichts her.
    Kann es sein, dass die Funktion "month" nicht über einen Jahreswechsel hinaus geht?
    Ja, das steht auch so im Handbuch, S.143:
    Der Ausgang ist 1b01, wenn das Datum erreicht oder bereits verstrichen ist. Liegt das Datum vor dem eingestellten Wert, geht der Ausgang auf 0b01. Mit dem Beginn eines neuenJahres (Januar, 1) geht der Ausgang auf 0b01, bis der Monat und Tag den eingestellten Wert erreichen.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von enertegus Beitrag anzeigen
      Ja, das steht auch so im Handbuch, S.143:
      Der Ausgang ist 1b01, wenn das Datum erreicht oder bereits verstrichen ist. Liegt das Datum vor dem eingestellten Wert, geht der Ausgang auf 0b01. Mit dem Beginn eines neuenJahres (Januar, 1) geht der Ausgang auf 0b01, bis der Monat und Tag den eingestellten Wert erreichen.

      Hallo Michael,

      Danke für die Antwort.
      In meinem Handbuch (HandbuchEibPC-18.odt, 2011-02-21) und in der Onlinevariante steht auf Seite 143 nichts zu dem Thema!?
      Aber soweit habe ich es schon verstanden. Im Klartext, wenn ich z.B. die Variable "Winter" über den Jahreswechsel ziehe, benötige ich zwei Variablen. "Winter1" < 01,01 und "Winter2" >01,01. Richtig? So funzt es, aber ist eben nicht sehr schön.

      Gruß
      Thomas

      Kommentar


        #4
        Zitat von EIB_Lehrling Beitrag anzeigen
        In meinem Handbuch (HandbuchEibPC-18.odt, 2011-02-21) und in der Onlinevariante steht auf Seite 143 nichts zu dem Thema!?
        da hast Du recht: Online steht ne alte Version vom Handbuch. Wir werden das ändern.
        Wenn Du EibStudio öffnest und F1 drückst (Win/Lin) geht immer das aktuelle Handbuch auf.
        Aber soweit habe ich es schon verstanden. Im Klartext, wenn ich z.B. die Variable "Winter" über den Jahreswechsel ziehe, benötige ich zwei Variablen. "Winter1" < 01,01 und "Winter2" >01,01. Richtig? So funzt es, aber ist eben nicht sehr schön.
        Ja, das ist richtig. Anders wäre es noch weniger schön, weil es dann ja kein Rücksetzen mehr gibt:month(24,12) soll doch jedes Jahr mal auf EIN gehen. Würde es nicht zurückgesetzt, gäb's Weihnachten nur einmal im Leben des EibPCs.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Hallo Thomas,

          mach es dir doch einfachen und definiere Sommer = month (30,03) and !month(31,10)

          und wenn du in einer Verknüpfung den Winter willst einfach "!sommer" oder eine eigene Variable

          winter =!Sommer

          dann hast du beides.
          Der schöne Niederrhein läßt Grüssen

          Andreas


          Alter Hof mit neuer Technik

          Kommentar


            #6
            Hallo Andreas,

            Danke für die Anregung, manchmal sieht man(n) den Wald vor lauter Bäumen nicht.
            Für die Unterscheidung Sommer/Winter ist dies sicher eine geeignete Möglichkeit. Das primäre Problem war aber zuerst, dass ich es nicht realisiert hatte, dass "month" nicht über den Jahreswechsel geht und somit bei mir eine Fehlfunktion ausgelöst hatte.

            Gruß

            Thomas

            Kommentar


              #7
              Das Problem hast Du aber mit allen vergleichenden Zeitfunktionen. Bis auf das Jahr springen alle Zeitangaben irgendwann von einem Maximum auf ihr Minimum zurück und das ist dann fix der Moment an dem die vergleichenden Zeitfunktionen von 1 auf 0 wechseln.

              Das geht daher nicht:

              Winterhalbjahr=month(01,11) and !month(01,04)

              Das dagegen geht (Winter ist, solange nicht Sommer ist):

              Winterhalbjahr=!(month(01,04) and !month(01,11))

              oder (Winter ist, solange beide entweder 0 (vor dem 01.04.) oder 1 (ab dem 01.11.) sind):

              Winterhalbjahr=(month(01,11) == month(01,04))

              Die zweite Lösung erklärt sich aber nicht so schön selbst...
              Tessi

              Kommentar

              Lädt...
              X