Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Anzahl der Tage nach Datum

Scheduled Pinned Locked Moved Blockly
48 Posts 8 Posters 5.8k Views 10 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by
                      #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 Reply Last reply
                      1
                      • T TT-Tom

                        @metaxa hier wurde das schon mal behandelt

                        Link Text

                        metaxaM Offline
                        metaxaM Offline
                        metaxa
                        wrote on last edited by
                        #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 Reply Last reply
                        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
                          wrote on last edited by 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 Reply Last reply
                          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
                            wrote on last edited by
                            #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 Reply Last reply
                            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
                              wrote on last edited by 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 Reply Last reply
                              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
                                wrote on last edited by
                                #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 Reply Last reply
                                0
                                • TheDukeT TheDuke

                                  Hallo,
                                  ich hätte gerne via Blockly die Anzahl der Tage vom 27.08.2021 bis heute immer aktuell ausgerechnet.

                                  Kennt da einer die Lösung ?

                                  Ich brauche den Wert um den Tagesstromverbrauch (kw/h) zu errechnen.

                                  schöne Grüße
                                  TheDuke

                                  OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  wrote on last edited by
                                  #46

                                  @theduke

                                  jetzt musste ich mich ein wenig überwinden um blockly mal zu verwenden.
                                  aber das müsste jetzt das Ergebnis sein.
                                  In den Instanz-Einstellungen des javascript-Adapters muss moment als zusätzliches NPM-Modul notiert sein.

                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                    <variables>
                                      <variable id=":bP4v,PSbl0.wsg$5|xF">Anfang</variable>
                                      <variable id="O~|HTHrC}({AIfe;gh+z">Ende</variable>
                                    </variables>
                                    <block type="procedures_defcustomreturn" id="QTo{nVr@cpYN16Y?.c^]" x="63" y="38">
                                      <mutation statements="false">
                                        <arg name="Anfang" varid=":bP4v,PSbl0.wsg$5|xF"></arg>
                                        <arg name="Ende" varid="O~|HTHrC}({AIfe;gh+z"></arg>
                                      </mutation>
                                      <field name="NAME">timeDiff</field>
                                      <field name="SCRIPT">dmFyIG1vbWVudCA9IHJlcXVpcmUoICJtb21lbnQiKTsNCiANCnZhciBiID0gbmV3IG1vbWVudChBbmZhbmcsIkRELk1NLllZWVkiKTsNCnZhciBhID0gRW5kZSA/IG1vbWVudChFbmRlLCJERC5NTS5ZWVlZIikgOiBuZXcgbW9tZW50KCk7DQoNCnZhciB5ZWFycyA9IGEuZGlmZihiLCAneWVhcicpOw0KYi5hZGQoeWVhcnMsICd5ZWFycycpOw0KDQp2YXIgbW9udGhzID0gYS5kaWZmKGIsICdtb250aHMnKTsNCmIuYWRkKG1vbnRocywgJ21vbnRocycpOw0KDQp2YXIgZGF5cyA9IGEuZGlmZihiLCAnZGF5cycpOw0KDQogcmV0dXJuIHllYXJzICsgJyBKYWhyZSAnICsgbW9udGhzICsgJyBNb25hdGUgJyArIGRheXMgKyAnIFRhZ2UnOw==</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                    </block>
                                    <block type="debug" id="d.h%S+zk(l*D_T{ZXU);" x="62" y="88">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="aJZ2mf]2,uwAhl@gntmi">
                                          <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="procedures_callcustomreturn" id="S#.4Uf98En!L.Cn0B.oc">
                                          <mutation name="timeDiff">
                                            <arg name="Anfang"></arg>
                                            <arg name="Ende"></arg>
                                          </mutation>
                                          <value name="ARG0">
                                            <block type="text" id="M]$n,}kSm/CCg%4]TO[z">
                                              <field name="TEXT">01.01.1900</field>
                                            </block>
                                          </value>
                                          <value name="ARG1">
                                            <block type="text" id="lLD6w7{pwG[f(h;f8eo$">
                                              <field name="TEXT">28.07.2022</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                    </block>
                                  </xml>
                                  

                                  f813f2b9-fd58-4fc8-9469-887e5fc14783-image.png

                                  Meine Adapter und Widgets
                                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                  Links im Profil

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    srkonus
                                    wrote on last edited by
                                    #47

                                    Bei mir werden die "Tageseit" nicht mehr aktualisiert. Habe vor zwei Tagen ein komplettes Update meiner iobroker Kiste gemacht. Habe jetzt Javascript ist nun Version 6, duration ist aktuell.
                                    Hat jemand vielleicht eine Idee, woran das liegen könnte, das log spuckt nichts in der Richtung aus.

                                    VG
                                    srkonus

                                    S 1 Reply Last reply
                                    0
                                    • S srkonus

                                      Bei mir werden die "Tageseit" nicht mehr aktualisiert. Habe vor zwei Tagen ein komplettes Update meiner iobroker Kiste gemacht. Habe jetzt Javascript ist nun Version 6, duration ist aktuell.
                                      Hat jemand vielleicht eine Idee, woran das liegen könnte, das log spuckt nichts in der Richtung aus.

                                      VG
                                      srkonus

                                      S Offline
                                      S Offline
                                      srkonus
                                      wrote on last edited by
                                      #48

                                      @srkonus said in Anzahl der Tage nach Datum:

                                      Bei mir werden die "Tageseit" nicht mehr aktualisiert. Habe vor zwei Tagen ein komplettes Update meiner iobroker Kiste gemacht. Habe jetzt Javascript ist nun Version 6, duration ist aktuell.
                                      Hat jemand vielleicht eine Idee, woran das liegen könnte, das log spuckt nichts in der Richtung aus.

                                      VG
                                      srkonus

                                      Scheint sich erledigt zu haben

                                      1 Reply Last reply
                                      0
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      327

                                      Online

                                      32.7k

                                      Users

                                      82.4k

                                      Topics

                                      1.3m

                                      Posts
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Login

                                      • Don't have an account? Register

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Home
                                      • Recent
                                      • Tags
                                      • Unread 0
                                      • Categories
                                      • Unreplied
                                      • Popular
                                      • GitHub
                                      • Docu
                                      • Hilfe