Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Anzahl der Tage nach Datum

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    324

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Anzahl der Tage nach Datum

Geplant Angeheftet Gesperrt Verschoben Blockly
48 Beiträge 8 Kommentatoren 5.5k Aufrufe 10 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • metaxaM metaxa

    @metaxa sagte in Anzahl der Tage nach Datum:

    Funktion Zeitraum_Tage_1 --> Ergebnis 96 (richtig)

    Ich habe rasch mit Excel nachgerechnet, da kommen aktuell 94 Tage raus. Komisch ........

    e23b18a0-ac25-4a6d-b149-9769fca3965a-image.png

    =DATEDIF($C$5;$F$6;"d")
    
    T Offline
    T Offline
    TT-Tom
    schrieb am zuletzt editiert von TT-Tom
    #26

    @metaxa bei mir kommen 96 raus. Formatierungensfehler der Zellen vielleicht.

    Gruß Tom
    https://github.com/tt-tom17
    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

    NSPanel Script Wiki
    https://github.com/joBr99/nspanel-lovelace-ui/wiki

    NSPanel Adapter Wiki
    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

    metaxaM 1 Antwort Letzte Antwort
    0
    • T TT-Tom

      @metaxa bei mir kommen 96 raus. Formatierungensfehler der Zellen vielleicht.

      metaxaM Offline
      metaxaM Offline
      metaxa
      schrieb am zuletzt editiert von metaxa
      #27

      @tt-tom sagte in Anzahl der Tage nach Datum:

      bei mir kommen 96 raus.

      Korrekt, in Excel habe ich es richtig gestellt, sorry mein Fehler. Ein Rätsel bleibt mir aber die Berechnung der duration function.

      T 1 Antwort Letzte Antwort
      0
      • metaxaM metaxa

        @tt-tom sagte in Anzahl der Tage nach Datum:

        bei mir kommen 96 raus.

        Korrekt, in Excel habe ich es richtig gestellt, sorry mein Fehler. Ein Rätsel bleibt mir aber die Berechnung der duration function.

        T Offline
        T Offline
        TT-Tom
        schrieb am zuletzt editiert von
        #28

        @metaxa

        Ja das ist komisch. Komme aktuell nicht an mein Rechner, um selber zu testen.

        Gruß Tom
        https://github.com/tt-tom17
        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

        NSPanel Script Wiki
        https://github.com/joBr99/nspanel-lovelace-ui/wiki

        NSPanel Adapter Wiki
        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

        mickymM 1 Antwort Letzte Antwort
        0
        • T TT-Tom

          @metaxa

          Ja das ist komisch. Komme aktuell nicht an mein Rechner, um selber zu testen.

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #29

          Das Problem ist, wenn Du bei Date nicht über eine Array initialisierst sondern Date mit dem normalen Konstruktor verwendest, (s. Date Funktion), dann wird der Januar mit Index 0 gezählt.

          18e36f61-dc9b-4a16-ac68-024854e0820b-image.png

          Siehe hier: https://www.w3schools.com/js/js_dates.asp

          Um also den 12.April 2022 zu bekommen musst Du beim Monat eines abziehen.

          var Duration = require("duration");
          
          var duration = new Duration(new Date(2022,3,12));
          return duration.days;
          

          Sprich in deinem 2. Beispiel berechnest Du die Tage seit dem 12. Mai 2022 anstelle des Aprils.

          Intern scheint bei einer Array Übergabe, dieses als String konvertiert zu werden siehe hier und somit in einen String konvertiert zu werden.

          2acf4b04-f375-44bf-aa7a-e3bd03f0478c-image.png

          Als String wird es dann wieder korrekt interpretiert:

          var Duration = require("duration");
          
          var duration = new Duration(new Date("2022,4,12"));
          return duration.days;
          
          

          Wenn Du Dir das Datum als String ausgeben lässt, dann siehst Du es ja:

          var Duration = require("duration");
          
          // var duration = new Duration(new Date("2022,4,12"));
          // return duration.days;
          
          const d = new Date(2022,4,12);
          return d;
          

          ergibt dann:
          b9d7fd46-1747-456e-944c-6acd6e45da5b-image.png

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Antwort Letzte Antwort
          1
          • mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #30

            Sorry - für die Verwirrung -

            @metaxa Somit kannst Du Deinen Datenpunkt als String direkt der duration Bibliothek übergeben, da dann das Datum aus einem String gebildet wird:

            0be459bb-1dc7-4d4f-a721-b699b0c396f4-image.png

            Also sorry nochmal. Aber so ist es ja auch noch einfacher und spart sich die Umrechnerei halt komplett. Man muss halt nur darauf achten, dass der String das Format YYYY/MM/DD hat. Ich lerne auch jeden Tag dazu. ;)

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            T metaxaM 2 Antworten Letzte Antwort
            1
            • mickymM mickym

              Sorry - für die Verwirrung -

              @metaxa Somit kannst Du Deinen Datenpunkt als String direkt der duration Bibliothek übergeben, da dann das Datum aus einem String gebildet wird:

              0be459bb-1dc7-4d4f-a721-b699b0c396f4-image.png

              Also sorry nochmal. Aber so ist es ja auch noch einfacher und spart sich die Umrechnerei halt komplett. Man muss halt nur darauf achten, dass der String das Format YYYY/MM/DD hat. Ich lerne auch jeden Tag dazu. ;)

              T Offline
              T Offline
              TT-Tom
              schrieb am zuletzt editiert von
              #31

              @mickym sagte in Anzahl der Tage nach Datum:

              Man muss halt nur darauf achten, dass der String das Format YYYY/MM/DD hat.

              @metaxa
              das meine ich vor hin. Kann mir nur die Reihenfolge nicht merken.

              Gruß Tom
              https://github.com/tt-tom17
              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

              NSPanel Script Wiki
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              NSPanel Adapter Wiki
              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

              mickymM 1 Antwort Letzte Antwort
              0
              • T TT-Tom

                @mickym sagte in Anzahl der Tage nach Datum:

                Man muss halt nur darauf achten, dass der String das Format YYYY/MM/DD hat.

                @metaxa
                das meine ich vor hin. Kann mir nur die Reihenfolge nicht merken.

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #32

                @tt-tom Daran lags aber nicht. Der String im Datenpunkt ist ja richtig. Das Problem war, dass @metaxa das Datum direkt konstruiert hat und dann muss halt bei Monat 1 abgezogen werden, da die Monate mit Index 0 in Javascript beginnen.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                T 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @tt-tom Daran lags aber nicht. Der String im Datenpunkt ist ja richtig. Das Problem war, dass @metaxa das Datum direkt konstruiert hat und dann muss halt bei Monat 1 abgezogen werden, da die Monate mit Index 0 in Javascript beginnen.

                  T Offline
                  T Offline
                  TT-Tom
                  schrieb am zuletzt editiert von
                  #33

                  @mickym
                  Ah, okay. Das Problem tritt aber nur auf, wenn man kein Enddatum angibt. Gruß Tom

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • T TT-Tom

                    @mickym
                    Ah, okay. Das Problem tritt aber nur auf, wenn man kein Enddatum angibt. Gruß Tom

                    mickymM Online
                    mickymM Online
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von mickym
                    #34

                    @tt-tom

                    Ah, okay. Das Problem tritt aber nur auf, wenn man kein Enddatum angibt. Gruß Tom

                    Nein hat damit nichts zu tun - wie gesagt, dass Problem ist immer, dass Date Objekt in JS mit Index 0 rechnen.
                    Wie gesagt ich hab unten ja zur Javascript Referenz verlinkt. https://www.w3schools.com/js/js_dates.asp

                    Das hat mit dem Enddatum nichts zu tun, da musst du genauso eins abziehen.

                    Folglich gibt dies hier:

                    var Duration = require("duration");
                    
                    var duration = new Duration(new Date(2022,6,1),new Date(2022,7,1));
                    return duration.days;
                    

                    31 Tage und nicht 30, weil es sich hier nicht um den JUNI, sondern um den JULI handelt.

                    Dies hingegen berechnet korrekt den JUNI:

                    var Duration = require("duration");
                    
                    var duration = new Duration(new Date(2022,5,1),new Date(2022,6,1));
                    return duration.days;
                    

                    Also 30 Tage.

                    BEACHTE: Bei dieser Schreibweise, werden 3 Argumente als Zahlen zur Konstruktion des Date-Objektes übergeben und KEIN String (oder Array, das implizit in einen String umgewandelt wird). Insofern war das Problem von @metaxa nicht nur, dass er einen Monat zuviel genommen hat, sondern 2 unterschiedliche Formate zur Konstruktion des Date-Objektes.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    T 1 Antwort Letzte Antwort
                    2
                    • mickymM mickym

                      @tt-tom

                      Ah, okay. Das Problem tritt aber nur auf, wenn man kein Enddatum angibt. Gruß Tom

                      Nein hat damit nichts zu tun - wie gesagt, dass Problem ist immer, dass Date Objekt in JS mit Index 0 rechnen.
                      Wie gesagt ich hab unten ja zur Javascript Referenz verlinkt. https://www.w3schools.com/js/js_dates.asp

                      Das hat mit dem Enddatum nichts zu tun, da musst du genauso eins abziehen.

                      Folglich gibt dies hier:

                      var Duration = require("duration");
                      
                      var duration = new Duration(new Date(2022,6,1),new Date(2022,7,1));
                      return duration.days;
                      

                      31 Tage und nicht 30, weil es sich hier nicht um den JUNI, sondern um den JULI handelt.

                      Dies hingegen berechnet korrekt den JUNI:

                      var Duration = require("duration");
                      
                      var duration = new Duration(new Date(2022,5,1),new Date(2022,6,1));
                      return duration.days;
                      

                      Also 30 Tage.

                      BEACHTE: Bei dieser Schreibweise, werden 3 Argumente als Zahlen zur Konstruktion des Date-Objektes übergeben und KEIN String (oder Array, das implizit in einen String umgewandelt wird). Insofern war das Problem von @metaxa nicht nur, dass er einen Monat zuviel genommen hat, sondern 2 unterschiedliche Formate zur Konstruktion des Date-Objektes.

                      T Offline
                      T Offline
                      TT-Tom
                      schrieb am zuletzt editiert von TT-Tom
                      #35

                      @mickym

                      Jetzt habe ich es verstanden. Dann ist es aber auf der Seite von npmjs falsch beschrieben oder ist das da wieder etwas anderes??
                      Link

                      Gruß Tom
                      https://github.com/tt-tom17
                      Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                      NSPanel Script Wiki
                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                      NSPanel Adapter Wiki
                      https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                      mickymM 1 Antwort Letzte Antwort
                      1
                      • T TT-Tom

                        @mickym

                        Jetzt habe ich es verstanden. Dann ist es aber auf der Seite von npmjs falsch beschrieben oder ist das da wieder etwas anderes??
                        Link

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von
                        #36

                        @tt-tom Nein es ist nicht falsch beschrieben. Das Date-Objekt wurde dort halt ebenfalls mit 3 Zahlenargumenten konstruiert. Die Duration Bibliothek vergleicht ja nur 2 Date-Objekte. Wie die Date-Objekte erstellt werden, sind Javascriptmethoden und haben mit der Duration Bibliothek überhaupt nichts zu tun. In dieser von mir verlinkten Seite siehst Du ja mit welch verschiedenen Methoden man ein Date-Objekt erstellen kann.

                        Somit ist klar, dass zum Beispiel das heutige Datum mit einem Date-Objekt wie folgt generiert werden kann:

                        new Date()
                        new Date(year, month, day, hours, minutes, seconds, milliseconds)
                        new Date(milliseconds)
                        new Date(date string)
                        

                        also entspricht eben (mal Uhrzeit ignorierend)

                        var datum = [];
                        
                        datum[0] = new Date();
                        datum[1] = new Date(2022,6,17);
                        datum[2] = new Date("2022,7,17");
                        
                        return datum;
                        

                        ergibt dann:

                        ['2022-07-17T13:35:04.179Z','2022-07-16T22:00:00.000Z','2022-07-16T22:00:00.000Z']
                        

                        Man sieht dann allerdings, dass sich ohne Zeitangaben immer UTC Zeiten ergeben, also GMT +0. Das ist halt immer der Bezugspunkt. Für die Duration ist das aber egal, weil ja dann auch Start- und Endzeiten immer UTC Zeiten, als Basis dienen. Bei Zeitdifferenzen ist das auch egal, da man ja nicht mit absoluten sondern nur relative Zeiträume hat.

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        T 1 Antwort Letzte Antwort
                        1
                        • mickymM mickym

                          Sorry - für die Verwirrung -

                          @metaxa Somit kannst Du Deinen Datenpunkt als String direkt der duration Bibliothek übergeben, da dann das Datum aus einem String gebildet wird:

                          0be459bb-1dc7-4d4f-a721-b699b0c396f4-image.png

                          Also sorry nochmal. Aber so ist es ja auch noch einfacher und spart sich die Umrechnerei halt komplett. Man muss halt nur darauf achten, dass der String das Format YYYY/MM/DD hat. Ich lerne auch jeden Tag dazu. ;)

                          metaxaM Offline
                          metaxaM Offline
                          metaxa
                          schrieb am zuletzt editiert von
                          #37

                          @mickym & @TT-Tom

                          Vorneweg, herzlichsten Dank für den Crashkurs in JS :dizzy_face: , einfach super wie die dieses Forum funktioniert. Kaum geht man kurz essen, liegt die Lösung & ERKLÄRUNG schon am Nachtisch :-)

                          Hier meine finale Umsetzung
                          0b6ecb5d-9d65-44c3-8707-04f60fdc804f-image.png

                          Lieben Dank aus Wien
                          mxa

                          1 Antwort Letzte Antwort
                          1
                          • mickymM mickym

                            @tt-tom Nein es ist nicht falsch beschrieben. Das Date-Objekt wurde dort halt ebenfalls mit 3 Zahlenargumenten konstruiert. Die Duration Bibliothek vergleicht ja nur 2 Date-Objekte. Wie die Date-Objekte erstellt werden, sind Javascriptmethoden und haben mit der Duration Bibliothek überhaupt nichts zu tun. In dieser von mir verlinkten Seite siehst Du ja mit welch verschiedenen Methoden man ein Date-Objekt erstellen kann.

                            Somit ist klar, dass zum Beispiel das heutige Datum mit einem Date-Objekt wie folgt generiert werden kann:

                            new Date()
                            new Date(year, month, day, hours, minutes, seconds, milliseconds)
                            new Date(milliseconds)
                            new Date(date string)
                            

                            also entspricht eben (mal Uhrzeit ignorierend)

                            var datum = [];
                            
                            datum[0] = new Date();
                            datum[1] = new Date(2022,6,17);
                            datum[2] = new Date("2022,7,17");
                            
                            return datum;
                            

                            ergibt dann:

                            ['2022-07-17T13:35:04.179Z','2022-07-16T22:00:00.000Z','2022-07-16T22:00:00.000Z']
                            

                            Man sieht dann allerdings, dass sich ohne Zeitangaben immer UTC Zeiten ergeben, also GMT +0. Das ist halt immer der Bezugspunkt. Für die Duration ist das aber egal, weil ja dann auch Start- und Endzeiten immer UTC Zeiten, als Basis dienen. Bei Zeitdifferenzen ist das auch egal, da man ja nicht mit absoluten sondern nur relative Zeiträume hat.

                            T Offline
                            T Offline
                            TT-Tom
                            schrieb am zuletzt editiert von
                            #38

                            @mickym

                            Ja das ist soweit alles klar. Aber wie du auch schon hingewiesen hast

                            Folglich gibt dies hier:

                            var Duration = require("duration");
                            var duration = new Duration(new Date(2022,6,1),new Date(2022,7,1));
                            return duration.days;
                            

                            31 Tage und nicht 30, weil es sich hier nicht um den JUNI, sondern um den JULI handelt.

                            Wenn ich die Bibliothek nutze muss ich wissen, das Date den Monat mit 0 beginnt. da hätte ich mir einen Hinweis gewünscht, darum dachte ich es ist falsch beschrieben.

                            Gruß Tom

                            Gruß Tom
                            https://github.com/tt-tom17
                            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                            NSPanel Script Wiki
                            https://github.com/joBr99/nspanel-lovelace-ui/wiki

                            NSPanel Adapter Wiki
                            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                            metaxaM 1 Antwort Letzte Antwort
                            1
                            • T TT-Tom

                              @mickym

                              Ja das ist soweit alles klar. Aber wie du auch schon hingewiesen hast

                              Folglich gibt dies hier:

                              var Duration = require("duration");
                              var duration = new Duration(new Date(2022,6,1),new Date(2022,7,1));
                              return duration.days;
                              

                              31 Tage und nicht 30, weil es sich hier nicht um den JUNI, sondern um den JULI handelt.

                              Wenn ich die Bibliothek nutze muss ich wissen, das Date den Monat mit 0 beginnt. da hätte ich mir einen Hinweis gewünscht, darum dachte ich es ist falsch beschrieben.

                              Gruß Tom

                              metaxaM Offline
                              metaxaM Offline
                              metaxa
                              schrieb am zuletzt editiert von
                              #39

                              @mickym & @tt-tom

                              Ich darf vielleicht kurz erklären was ich bezwecke. "RoI" ich möchte einfach den jeweils aktuellen Zeitpunkt errechnen, ab dem sich meine PV-Investition gerechnet hat. Ja klar, ohne Zinsen & Zinseszinsen & Inflation, einfach als Richtwert.

                              Mein nächstes Hindernis wird bei der PoI Datumsberechnung die Addition von x Tagen zum heutigen Datum sein. Geht das auch mit dieser Bibliothek? Ich fürchte nicht.

                              T 1 Antwort Letzte Antwort
                              0
                              • metaxaM metaxa

                                @mickym & @tt-tom

                                Ich darf vielleicht kurz erklären was ich bezwecke. "RoI" ich möchte einfach den jeweils aktuellen Zeitpunkt errechnen, ab dem sich meine PV-Investition gerechnet hat. Ja klar, ohne Zinsen & Zinseszinsen & Inflation, einfach als Richtwert.

                                Mein nächstes Hindernis wird bei der PoI Datumsberechnung die Addition von x Tagen zum heutigen Datum sein. Geht das auch mit dieser Bibliothek? Ich fürchte nicht.

                                T Offline
                                T Offline
                                TT-Tom
                                schrieb am zuletzt editiert von
                                #40

                                @metaxa hier wurde das schon mal behandelt

                                Link Text

                                Gruß Tom
                                https://github.com/tt-tom17
                                Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                NSPanel Script Wiki
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                NSPanel Adapter Wiki
                                https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                metaxaM 1 Antwort Letzte Antwort
                                1
                                • T TT-Tom

                                  @metaxa hier wurde das schon mal behandelt

                                  Link Text

                                  metaxaM Offline
                                  metaxaM Offline
                                  metaxa
                                  schrieb am zuletzt editiert von
                                  #41

                                  @tt-tom Danke!
                                  Die manuelle Form habe ich schon gefunden und testweise umgesetzt. Hoffte jetzt, dass es mit einer "gschmeidigen" JS Bibliothek oder Function geht.

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • metaxaM metaxa

                                    @tt-tom Danke!
                                    Die manuelle Form habe ich schon gefunden und testweise umgesetzt. Hoffte jetzt, dass es mit einer "gschmeidigen" JS Bibliothek oder Function geht.

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #42

                                    @metaxa ja die gibt es. Musst nur die moment Library nutzen. Hier mal die komplette Dokumentation:
                                    https://momentjs.com/docs/#/manipulating/

                                    Wenn Du moment nutzt, dann kannst auf duratlion verzichten, da du Differenz 2er moments berechnen lassen kannst.

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    metaxaM 1 Antwort Letzte Antwort
                                    1
                                    • mickymM mickym

                                      @metaxa ja die gibt es. Musst nur die moment Library nutzen. Hier mal die komplette Dokumentation:
                                      https://momentjs.com/docs/#/manipulating/

                                      Wenn Du moment nutzt, dann kannst auf duratlion verzichten, da du Differenz 2er moments berechnen lassen kannst.

                                      metaxaM Offline
                                      metaxaM Offline
                                      metaxa
                                      schrieb am zuletzt editiert von
                                      #43

                                      @mickym sagte in Anzahl der Tage nach Datum:

                                      Hier mal die komplette Dokumentation

                                      Du hast dich nicht zufällig vertippt und meinst "komplexe" Dokumentation? Ganz lieben Dank, ich werde mich einlesen und ggf. erlauben hier nachzufragen.

                                      mickymM 1 Antwort Letzte Antwort
                                      0
                                      • metaxaM metaxa

                                        @mickym sagte in Anzahl der Tage nach Datum:

                                        Hier mal die komplette Dokumentation

                                        Du hast dich nicht zufällig vertippt und meinst "komplexe" Dokumentation? Ganz lieben Dank, ich werde mich einlesen und ggf. erlauben hier nachzufragen.

                                        mickymM Online
                                        mickymM Online
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von mickym
                                        #44

                                        @metaxa Also ich bin bekannterweise kein Blockly Fan (auch wenn es manchen schon nervt das zu hören) - aber die moment Bibliothek ist sehr mächtig - (da brauchst dann auch die duration Bibliothek nur noch in Sonderfällen). Ich arbeite ja mit NodeRed und da ist die Bibliothek Bestandteil der JSONATA Syntax. Falls Du die Möglichkeit in der Praxis mit NodeRed sehen möchtest auch im Vergleich zu Blockly - siehst Du hier: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered

                                        So nun aber mal kurz ein paar Beispiele wie Du die moments Bibliothek ohne durations, aber mit der moment Bibliothek nutzen kannst. Ein Vorteil ist, dass Du Datum auch als deutsches Stringformat eingeben kannst.

                                        Hier mal die Berechnung von Zeitdifferenzen in Tagen:

                                        Einmal ohne Angabe eines Enddatums (dann heute):

                                        7bbbee6f-7cf8-4c40-a04b-df7be96bb41a-image.png

                                        Mit Moment schaut die Funktion dann so aus:

                                        var moment = require( "moment");
                                        
                                        var anfang = new moment(Anfang,"DD.MM.YYYY");
                                        var ende = Ende ? moment(Ende,"DD.MM.YYYY") : new moment();
                                        
                                        return ende.diff(anfang,'days');
                                        
                                        

                                        Nun zum Addieren von Tagen mit der Moments Bibliothek - ich zeige hier nur wie Du die Doku dann für Blockly umsetzen kannst. ;)

                                        c358baf0-ab34-45f0-a767-59a4e5d13d33-image.png

                                        Gibt man kein Datum mit, werden Anzahl Tage (hier 5) zum heutigen Datum dazugezählt: Also 5 Tage zu heute (17.7.2022) ist der 22.7.2022.

                                        Achte bitte darauf dass ich bei der Eingabe der Datumsformate das Monatsdatum immer 2-stellig definiert habe.

                                        Wenn man ein spezielles Datum definiert dann zum Besipiel 5 Tage zum 30.7.2022 ergibt den 4.8.2022-

                                        var moment = require( "moment");
                                        
                                        var datum = Datum ? new moment(Datum,"DD.MM.YYYY") : new moment();
                                        datum = datum.add(Tage,'days');
                                        
                                        return datum.format('DD.MM.YYYY');
                                        

                                        Also mit der Bibliothek ziemlich easy.

                                        Und nun solltest Du mit der Dokumentation klar kommen.

                                        Hier mal das gesamte Blockly zum Import:

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                         <variables>
                                           <variable id=")_WmmKyNEo=;|R/~e$hK">Anfang</variable>
                                           <variable id="}5CPYSJ=hwX%JYD`VX#_">Ende</variable>
                                           <variable id="GJ2X+W~B7(ELIzd~F=o0">Datum</variable>
                                           <variable id="7,6IdwYUIp%d:m5OOj~;">Tage</variable>
                                         </variables>
                                         <block type="procedures_defcustomreturn" id="y)4fJSiHkYC};llO^|]/" x="-1638" y="-312">
                                           <mutation statements="false">
                                             <arg name="Anfang" varid=")_WmmKyNEo=;|R/~e$hK"></arg>
                                             <arg name="Ende" varid="}5CPYSJ=hwX%JYD`VX#_"></arg>
                                           </mutation>
                                           <field name="NAME">Moment_Differenz</field>
                                           <field name="SCRIPT">dmFyIG1vbWVudCA9IHJlcXVpcmUoICJtb21lbnQiKTsKCnZhciBhbmZhbmcgPSBuZXcgbW9tZW50KEFuZmFuZywiREQuTU0uWVlZWSIpOwp2YXIgZW5kZSA9IEVuZGUgPyBtb21lbnQoRW5kZSwiREQuTU0uWVlZWSIpIDogbmV3IG1vbWVudCgpOwoKcmV0dXJuIGVuZGUuZGlmZihhbmZhbmcsJ2RheXMnKTsK</field>
                                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                         </block>
                                         <block type="procedures_defcustomreturn" id="2?TcSF@Q3.XiF+w^x56d" x="-1638" y="-263">
                                           <mutation statements="false">
                                             <arg name="Datum" varid="GJ2X+W~B7(ELIzd~F=o0"></arg>
                                             <arg name="Tage" varid="7,6IdwYUIp%d:m5OOj~;"></arg>
                                           </mutation>
                                           <field name="NAME">Moment_AddiereTage</field>
                                           <field name="SCRIPT">dmFyIG1vbWVudCA9IHJlcXVpcmUoICJtb21lbnQiKTsKCnZhciBkYXR1bSA9IERhdHVtID8gbmV3IG1vbWVudChEYXR1bSwiREQuTU0uWVlZWSIpIDogbmV3IG1vbWVudCgpOwpkYXR1bSA9IGRhdHVtLmFkZChUYWdlLCdkYXlzJyk7CgpyZXR1cm4gZGF0dW0uZm9ybWF0KCdERC5NTS5ZWVlZJyk7</field>
                                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                         </block>
                                         <block type="debug" id="hBxQi:-}r-!f4`-k6Mx1" x="-1637" y="-188">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="~`tNWpp2ZX(41v=jX9rk">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="procedures_callcustomreturn" id="gXBc5Mpo557/;-XL:})[">
                                               <mutation name="Moment_Differenz">
                                                 <arg name="Anfang"></arg>
                                                 <arg name="Ende"></arg>
                                               </mutation>
                                               <value name="ARG0">
                                                 <block type="text" id="55*#_?kbQ`bR8QgRg%Bh">
                                                   <field name="TEXT">12.04.2022</field>
                                                 </block>
                                               </value>
                                               <value name="ARG1">
                                                 <block type="text" id="2N.XgvxjFAVF-haH^j7g">
                                                   <field name="TEXT">16.07.2022</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="debug" id=";4A]%ih-j@_2.Hb]#f@x">
                                               <field name="Severity">log</field>
                                               <value name="TEXT">
                                                 <shadow type="text" id="x*[d7:DM=|PXL#4;dba.">
                                                   <field name="TEXT">test</field>
                                                 </shadow>
                                                 <block type="procedures_callcustomreturn" id=".LnKe$tneQ?)oULp7(4_">
                                                   <mutation name="Moment_Differenz">
                                                     <arg name="Anfang"></arg>
                                                     <arg name="Ende"></arg>
                                                   </mutation>
                                                   <value name="ARG0">
                                                     <block type="text" id="|y(F{I3+VUxW.m2z(jj[">
                                                       <field name="TEXT">12.04.2022</field>
                                                     </block>
                                                   </value>
                                                   <value name="ARG1">
                                                     <block type="text" id="ovE;8afL.d+r@FAPDKDt">
                                                       <field name="TEXT"></field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                             </block>
                                           </next>
                                         </block>
                                         <block type="debug" id="@7:I5KP{7ID{_X.x_6A7" x="-1588" y="187">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="Nb:y;@-.`)6G}1nRKOIe">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="procedures_callcustomreturn" id="]50S50fb;0pET(XGL3G#">
                                               <mutation name="Moment_AddiereTage">
                                                 <arg name="Datum"></arg>
                                                 <arg name="Tage"></arg>
                                               </mutation>
                                               <value name="ARG0">
                                                 <block type="text" id="e-SvM0%C3{HkbOJKkeRL">
                                                   <field name="TEXT"></field>
                                                 </block>
                                               </value>
                                               <value name="ARG1">
                                                 <block type="math_number" id=")tEE[yu9dI[;Hk]hXG|q">
                                                   <field name="NUM">5</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="debug" id="e[mHd;#GVDt[SzC-R{ly">
                                               <field name="Severity">log</field>
                                               <value name="TEXT">
                                                 <shadow type="text" id="?*jJi?+uW[Bk)_/PRdq$">
                                                   <field name="TEXT">test</field>
                                                 </shadow>
                                                 <block type="procedures_callcustomreturn" id="BG$CusF_8)K;V)bIsV5}">
                                                   <mutation name="Moment_AddiereTage">
                                                     <arg name="Datum"></arg>
                                                     <arg name="Tage"></arg>
                                                   </mutation>
                                                   <value name="ARG0">
                                                     <block type="text" id="PNZIB?*3#mK.nnD)%z{N">
                                                       <field name="TEXT">30.07.2022</field>
                                                     </block>
                                                   </value>
                                                   <value name="ARG1">
                                                     <block type="math_number" id="sotH9mM!(Z/B8%.r7A?Y">
                                                       <field name="NUM">5</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                             </block>
                                           </next>
                                         </block>
                                        </xml>
                                        

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        metaxaM 1 Antwort Letzte Antwort
                                        1
                                        • mickymM mickym

                                          @metaxa Also ich bin bekannterweise kein Blockly Fan (auch wenn es manchen schon nervt das zu hören) - aber die moment Bibliothek ist sehr mächtig - (da brauchst dann auch die duration Bibliothek nur noch in Sonderfällen). Ich arbeite ja mit NodeRed und da ist die Bibliothek Bestandteil der JSONATA Syntax. Falls Du die Möglichkeit in der Praxis mit NodeRed sehen möchtest auch im Vergleich zu Blockly - siehst Du hier: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered

                                          So nun aber mal kurz ein paar Beispiele wie Du die moments Bibliothek ohne durations, aber mit der moment Bibliothek nutzen kannst. Ein Vorteil ist, dass Du Datum auch als deutsches Stringformat eingeben kannst.

                                          Hier mal die Berechnung von Zeitdifferenzen in Tagen:

                                          Einmal ohne Angabe eines Enddatums (dann heute):

                                          7bbbee6f-7cf8-4c40-a04b-df7be96bb41a-image.png

                                          Mit Moment schaut die Funktion dann so aus:

                                          var moment = require( "moment");
                                          
                                          var anfang = new moment(Anfang,"DD.MM.YYYY");
                                          var ende = Ende ? moment(Ende,"DD.MM.YYYY") : new moment();
                                          
                                          return ende.diff(anfang,'days');
                                          
                                          

                                          Nun zum Addieren von Tagen mit der Moments Bibliothek - ich zeige hier nur wie Du die Doku dann für Blockly umsetzen kannst. ;)

                                          c358baf0-ab34-45f0-a767-59a4e5d13d33-image.png

                                          Gibt man kein Datum mit, werden Anzahl Tage (hier 5) zum heutigen Datum dazugezählt: Also 5 Tage zu heute (17.7.2022) ist der 22.7.2022.

                                          Achte bitte darauf dass ich bei der Eingabe der Datumsformate das Monatsdatum immer 2-stellig definiert habe.

                                          Wenn man ein spezielles Datum definiert dann zum Besipiel 5 Tage zum 30.7.2022 ergibt den 4.8.2022-

                                          var moment = require( "moment");
                                          
                                          var datum = Datum ? new moment(Datum,"DD.MM.YYYY") : new moment();
                                          datum = datum.add(Tage,'days');
                                          
                                          return datum.format('DD.MM.YYYY');
                                          

                                          Also mit der Bibliothek ziemlich easy.

                                          Und nun solltest Du mit der Dokumentation klar kommen.

                                          Hier mal das gesamte Blockly zum Import:

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                           <variables>
                                             <variable id=")_WmmKyNEo=;|R/~e$hK">Anfang</variable>
                                             <variable id="}5CPYSJ=hwX%JYD`VX#_">Ende</variable>
                                             <variable id="GJ2X+W~B7(ELIzd~F=o0">Datum</variable>
                                             <variable id="7,6IdwYUIp%d:m5OOj~;">Tage</variable>
                                           </variables>
                                           <block type="procedures_defcustomreturn" id="y)4fJSiHkYC};llO^|]/" x="-1638" y="-312">
                                             <mutation statements="false">
                                               <arg name="Anfang" varid=")_WmmKyNEo=;|R/~e$hK"></arg>
                                               <arg name="Ende" varid="}5CPYSJ=hwX%JYD`VX#_"></arg>
                                             </mutation>
                                             <field name="NAME">Moment_Differenz</field>
                                             <field name="SCRIPT">dmFyIG1vbWVudCA9IHJlcXVpcmUoICJtb21lbnQiKTsKCnZhciBhbmZhbmcgPSBuZXcgbW9tZW50KEFuZmFuZywiREQuTU0uWVlZWSIpOwp2YXIgZW5kZSA9IEVuZGUgPyBtb21lbnQoRW5kZSwiREQuTU0uWVlZWSIpIDogbmV3IG1vbWVudCgpOwoKcmV0dXJuIGVuZGUuZGlmZihhbmZhbmcsJ2RheXMnKTsK</field>
                                             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                           </block>
                                           <block type="procedures_defcustomreturn" id="2?TcSF@Q3.XiF+w^x56d" x="-1638" y="-263">
                                             <mutation statements="false">
                                               <arg name="Datum" varid="GJ2X+W~B7(ELIzd~F=o0"></arg>
                                               <arg name="Tage" varid="7,6IdwYUIp%d:m5OOj~;"></arg>
                                             </mutation>
                                             <field name="NAME">Moment_AddiereTage</field>
                                             <field name="SCRIPT">dmFyIG1vbWVudCA9IHJlcXVpcmUoICJtb21lbnQiKTsKCnZhciBkYXR1bSA9IERhdHVtID8gbmV3IG1vbWVudChEYXR1bSwiREQuTU0uWVlZWSIpIDogbmV3IG1vbWVudCgpOwpkYXR1bSA9IGRhdHVtLmFkZChUYWdlLCdkYXlzJyk7CgpyZXR1cm4gZGF0dW0uZm9ybWF0KCdERC5NTS5ZWVlZJyk7</field>
                                             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                           </block>
                                           <block type="debug" id="hBxQi:-}r-!f4`-k6Mx1" x="-1637" y="-188">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="~`tNWpp2ZX(41v=jX9rk">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="procedures_callcustomreturn" id="gXBc5Mpo557/;-XL:})[">
                                                 <mutation name="Moment_Differenz">
                                                   <arg name="Anfang"></arg>
                                                   <arg name="Ende"></arg>
                                                 </mutation>
                                                 <value name="ARG0">
                                                   <block type="text" id="55*#_?kbQ`bR8QgRg%Bh">
                                                     <field name="TEXT">12.04.2022</field>
                                                   </block>
                                                 </value>
                                                 <value name="ARG1">
                                                   <block type="text" id="2N.XgvxjFAVF-haH^j7g">
                                                     <field name="TEXT">16.07.2022</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="debug" id=";4A]%ih-j@_2.Hb]#f@x">
                                                 <field name="Severity">log</field>
                                                 <value name="TEXT">
                                                   <shadow type="text" id="x*[d7:DM=|PXL#4;dba.">
                                                     <field name="TEXT">test</field>
                                                   </shadow>
                                                   <block type="procedures_callcustomreturn" id=".LnKe$tneQ?)oULp7(4_">
                                                     <mutation name="Moment_Differenz">
                                                       <arg name="Anfang"></arg>
                                                       <arg name="Ende"></arg>
                                                     </mutation>
                                                     <value name="ARG0">
                                                       <block type="text" id="|y(F{I3+VUxW.m2z(jj[">
                                                         <field name="TEXT">12.04.2022</field>
                                                       </block>
                                                     </value>
                                                     <value name="ARG1">
                                                       <block type="text" id="ovE;8afL.d+r@FAPDKDt">
                                                         <field name="TEXT"></field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                               </block>
                                             </next>
                                           </block>
                                           <block type="debug" id="@7:I5KP{7ID{_X.x_6A7" x="-1588" y="187">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="Nb:y;@-.`)6G}1nRKOIe">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="procedures_callcustomreturn" id="]50S50fb;0pET(XGL3G#">
                                                 <mutation name="Moment_AddiereTage">
                                                   <arg name="Datum"></arg>
                                                   <arg name="Tage"></arg>
                                                 </mutation>
                                                 <value name="ARG0">
                                                   <block type="text" id="e-SvM0%C3{HkbOJKkeRL">
                                                     <field name="TEXT"></field>
                                                   </block>
                                                 </value>
                                                 <value name="ARG1">
                                                   <block type="math_number" id=")tEE[yu9dI[;Hk]hXG|q">
                                                     <field name="NUM">5</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="debug" id="e[mHd;#GVDt[SzC-R{ly">
                                                 <field name="Severity">log</field>
                                                 <value name="TEXT">
                                                   <shadow type="text" id="?*jJi?+uW[Bk)_/PRdq$">
                                                     <field name="TEXT">test</field>
                                                   </shadow>
                                                   <block type="procedures_callcustomreturn" id="BG$CusF_8)K;V)bIsV5}">
                                                     <mutation name="Moment_AddiereTage">
                                                       <arg name="Datum"></arg>
                                                       <arg name="Tage"></arg>
                                                     </mutation>
                                                     <value name="ARG0">
                                                       <block type="text" id="PNZIB?*3#mK.nnD)%z{N">
                                                         <field name="TEXT">30.07.2022</field>
                                                       </block>
                                                     </value>
                                                     <value name="ARG1">
                                                       <block type="math_number" id="sotH9mM!(Z/B8%.r7A?Y">
                                                         <field name="NUM">5</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                               </block>
                                             </next>
                                           </block>
                                          </xml>
                                          

                                          metaxaM Offline
                                          metaxaM Offline
                                          metaxa
                                          schrieb am zuletzt editiert von
                                          #45

                                          @mickym sagte in Anzahl der Tage nach Datum:

                                          siehst Du hier:

                                          Da tut sich ein völlig neue Welt für mich auf, boahhhhh.

                                          @mickym sagte in Anzahl der Tage nach Datum:

                                          Hier mal das gesamte Blockly zum Import:

                                          Bin ich froh, noch 2 Tage Urlaub zu haben.

                                          Herzlichsten Dank für die wahnsinnige Detailarbeit!
                                          Chapeau!

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          540

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe