Datum vergleichen und unterschied Tage berechnen.

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • HIS-Loxone
    MS Profi
    • 26.08.2015
    • 552

    #1

    Datum vergleichen und unterschied Tage berechnen.

    Ich würde gerne zwei Datum mit einander vergleichen und die dazwischen liegenden Tage berechnen.
    hab ihr eine Idee?
  • Grestorn
    LoxBus Spammer
    • 11.07.2022
    • 332

    #2
    Mit PicoC sollte das gehen. Aber in welcher Form hast Du denn das Datum?

    Kommentar

    • HIS-Loxone
      MS Profi
      • 26.08.2015
      • 552

      #3
      das kann ich mir selbst zusammen bauen

      nur wie ich da was mit PicoC mach keine ahnung

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Screenshot 2024-04-20 152030.png
Ansichten: 240
Größe: 83,9 KB
ID: 430054

      Kommentar

      • Grestorn
        LoxBus Spammer
        • 11.07.2022
        • 332

        #4
        Ich hab das eben gebaut. Mach ein Programmobjekt und schließ ihn wie folt an:

        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 243
Größe: 23,0 KB
ID: 430064

        year1, month1 und day1 ist das eine Datum (jeweils numerische Werte!) und year2, month2, day2 das zweite.

        In O1 ist die Differenz in Tagen. ETxt ist eine Fehlerausgabe, falls der PicoC Code nen Fehler wirft. Ich habe ihn aber getestet, wer geht korrekt.

        Der Code ist wie folgt, einfach in die Code-Box kopieren:

        Code:
        long time1 = gettimeval(getinput(0), getinput(1), getinput(2),0,0,0,0);
        long time2 = gettimeval(getinput(3), getinput(4), getinput(5),0,0,0,0);
        
        setoutput(0, (time2 - time1) / 86400);​
        Erklärung:
        gettimeval berechnet die Sekunden (seit dem 1.1.2009) eines gegebenen Datums.
        Ich erzeuge die Differenz der beiden Zeitstamps, die dann in Sekunden ist. Um die Differenz in Tagen bekommen, muss man das Ergebnis durch 86400 dividieren, denn das ist die Zahl der Sekunden pro Tag.

        Ich hoffe, das hilft Dir weiter!

        Kommentar

        • HIS-Loxone
          MS Profi
          • 26.08.2015
          • 552

          #5
          Das hat super geklappt danke! das ist perfekt. Danke

          Kommentar

          • HIS-Loxone
            MS Profi
            • 26.08.2015
            • 552

            #6
            @Grestorn in der Berechnung ist noch ein kleines Problem.
            Die Berechnung erfolgt nur beim im Server speichern.
            leider aber nicht beim Ändern des wertes I3 oder so.
            ich könnte mir einen Impuls Eingang vorstellen der die Berechnung startet aber wie könnte das aussehen.
            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Screenshot 2024-04-24 084047.png Ansichten: 0 Größe: 17,7 KB ID: 430439
            Zuletzt geändert von HIS-Loxone; 24.04.2024, 09:51.

            Kommentar

            • Grestorn
              LoxBus Spammer
              • 11.07.2022
              • 332

              #7
              Bist Du ganz sicher? Die Rechnung ist eigentlich Foolproof. Ich weiß aber nicht, wann der Programmbaustein eine Neuberechnung triggern. Hast Du die Ausgabe mal in der Visualisierung anzeigen lassen? Ich bin mir nicht so sicher, dass die Live-View Anzeige im Config die richtigen Werte anzeigt bei Programmbausteinen (bei mir hat sie das nämlich nicht). In der Visualisierung stimmen sie dann aber immer.

              Kommentar

              • HIS-Loxone
                MS Profi
                • 26.08.2015
                • 552

                #8
                Habs auch schon mit einen Virtuellen Eingang mit Schieber versucht um auf I3 einen Datumswechsel zu Simulieren.
                am Ausgang ändert sich auch im Virtuellen Status nix. Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Screenshot 2024-04-24 112707.png Ansichten: 0 Größe: 253,1 KB ID: 430465
                Angehängte Dateien

                Kommentar

                • HIS-Loxone
                  MS Profi
                  • 26.08.2015
                  • 552

                  #9
                  definitiv er berechnet nur beim speichern.

                  Kommentar

                  • Tico
                    Lox Guru
                    • 31.08.2016
                    • 1035

                    #10
                    Ich habe ein ähnliches Verhalten mit dem PicoC-Code in einem Miniserver Gen1 festgestellt. Ich habe es nicht mit einem Gen2 getestet.

                    Beigefügt ist ein leicht modifizierter Code, der nur bei einer Wertänderung an einem von I1-I6 läuft.

                    Code:
                    int prevEvent = -1; // Initialize previous event to an invalid value
                    
                    while (1) {
                        int currentEvent = getinputevent();
                        
                        // Check if there's a change in input event
                        if (currentEvent != prevEvent) {
                            // Update previous event
                            prevEvent = currentEvent;
                    
                            // Get time values
                            long time1 = gettimeval(getinput(0), getinput(1), getinput(2), 0, 0, 0, 1);
                            long time2 = gettimeval(getinput(3), getinput(4), getinput(5), 0, 0, 0, 1);
                    
                            // Set output based on time difference
                            setoutput(0, (time2 - time1) / 86400);
                        }
                    
                        sleep(100);
                    }
                    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                    Kommentar

                    • HIS-Loxone
                      MS Profi
                      • 26.08.2015
                      • 552

                      #11
                      jetzt gehts auch

                      Danke

                      Kommentar

                      Lädt...