Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Anzahl der Tage nach Datum

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Anzahl der Tage nach Datum

    This topic has been deleted. Only users with topic management privileges can see it.
    • metaxa
      metaxa @TT-Tom last edited by

      @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 Reply Quote 0
      • T
        TT-Tom @metaxa last edited by

        @metaxa hier wurde das schon mal behandelt

        Link Text

        metaxa 1 Reply Last reply Reply Quote 1
        • metaxa
          metaxa @TT-Tom last edited by

          @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.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @metaxa last edited by 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.

            metaxa 1 Reply Last reply Reply Quote 1
            • metaxa
              metaxa @mickym last edited by

              @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.

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @metaxa last edited by 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>
                

                metaxa 1 Reply Last reply Reply Quote 1
                • metaxa
                  metaxa @mickym last edited by

                  @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 Reply Quote 0
                  • OliverIO
                    OliverIO @TheDuke last edited by

                    @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

                    1 Reply Last reply Reply Quote 0
                    • S
                      srkonus last edited by

                      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 Reply Quote 0
                      • S
                        srkonus @srkonus last edited by

                        @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 Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        660
                        Online

                        31.7k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        8
                        48
                        2979
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo