NEWS
Gelöst: ParseInt
-
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); -
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);@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); -
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); }); -
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); });@michihorn
In Zeile 11 fehlt .split(':') am Ende.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden