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);
-
@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ürftigcreateState("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. -
sorry, wie genau muss das Ausehen?
-
@michihorn sagte in ParseInt:
wie genau muss das Ausehen?
So wie hier.
var VarDusk = getState("javascript.0.Astro.Zeiten.08 - dusk").val.split(':');
-