Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: ParseInt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst: ParseInt

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by michihorn

      Hallo
      ich möchte gerne aus einem String "17:02" die Std und die Minuten als Integer in einen Datenpunkt schreiben
      Ich habe das mal so versucht, geht das eleganter:

      var VarDusk=getState("javascript.0.Astro.Zeiten.08 - dusk").val; 
      var R_stunde = parseInt(VarDusk, 10);
      var min = VarDusk.substr(3, 2);
      var R_minute = parseInt(min, 10);
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @michihorn last edited by

        @michihorn sagte in ParseInt:

        "17:02" die Std und die Minuten als Integer

        Da die Stunden evtl. mit oder ohne führende "0" auftreten können, bevorzuge ich die Array-Version.

        var VarDusk = getState("javascript.0.Astro.Zeiten.08 - dusk").val.split(':'); 
        var R_stunde = parseInt(VarDusk[0], 10);
        var R_minute = parseInt(VarDusk[1], 10);
        
        1 Reply Last reply Reply Quote 0
        • M
          michihorn last edited by

          Danke,
          jetzt aktuell ist Dusk bei 17:05. R_minute gibt mir aber eine 7 aus. Warum?
          Anbei das komplette Script, sicher stark optimierungsbedürftig 😉

          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Astro_std",{read: true,write: true,desc: "Zeiteingabe Stunden ein,",type: "number",min:'0', max:'24',def:17});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Astro_min",{read: true,write: true,desc: "Zeiteingabe Minute ein,",type: "number",min:'0', max:'24',def:0});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Warte_std",{read: true,write: true,desc: "Zeiteingabe Stunden ein,",type: "number",min:'0', max:'24',def:1});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Warte_min",{read: true,write: true,desc: "Zeiteingabe Minute ein,",type: "number",min:'0', max:'24',def:0});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_std",{read: true,write: true,desc: "Neu Runter Stunden,",type: "number",min:'0', max:'24',def:1});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_min",{read: true,write: true,desc: "Neu Runter Minuten,",type: "number",min:'0', max:'24',def:0});
          createState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Verzögerung");
          
          
          schedule("* * * * *", function () {
          var VarDusk=getState("javascript.0.Astro.Zeiten.08 - dusk").val; 
          var R_stunde = parseInt(VarDusk[0], 10);
          //var min = VarDusk.substr(3, 2);
          var R_minute = parseInt(VarDusk[1], 10);
          log(R_minute);
          var Warte_std =getState('javascript.0.Rolladen.Zeitsteuerung.ASTRO.Warte_std').val
          var Warte_min =getState('javascript.0.Rolladen.Zeitsteuerung.ASTRO.Warte_min').val
          
          var add_std = Math.floor(R_stunde + Warte_std);
          var add_min = Math.floor(R_minute + Warte_min);
          
          var msec=60000 * ((60*Warte_std) + Warte_min);
          setState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Verzögerung", msec);
          
          setState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_std", add_std);
          setState("javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_min", add_min);
          var neue_std =getState('javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_std').val
          var neue_min =getState('javascript.0.Rolladen.Zeitsteuerung.ASTRO.Neu_min').val
          
          var R_time = 60 * neue_std + neue_min;
              let now = new Date();
              now = 60 * now.getHours() + now.getMinutes();
              let diff = (R_time - now);
              if(diff < 0) diff = 0;
              let h = Math.floor(diff / 60);
              let m = diff - h * 60;
              let restzeit = (h + " Stunden, " + m + " Minuten");
              log("Restzeit: " +restzeit);
              setState("javascript.0.Rolladen.Zeitsteuerung.VIER.Ganzzu", restzeit, true);
          });
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @michihorn last edited by

            @michihorn
            In Zeile 11 fehlt .split(':') am Ende.

            1 Reply Last reply Reply Quote 0
            • M
              michihorn last edited by

              sorry, wie genau muss das Ausehen?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @michihorn last edited by

                @michihorn sagte in ParseInt:

                wie genau muss das Ausehen?

                So wie hier.

                var VarDusk = getState("javascript.0.Astro.Zeiten.08 - dusk").val.split(':'); 
                
                1 Reply Last reply Reply Quote 0
                • M
                  michihorn last edited by

                  @paul53 sagte in ParseInt:

                  var VarDusk = getState("javascript.0.Astro.Zeiten.08 - dusk").val.split(':');

                  oh supi, danke

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  947
                  Online

                  31.7k
                  Users

                  79.6k
                  Topics

                  1.3m
                  Posts

                  javascript
                  2
                  7
                  1110
                  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