Stunde und Minute + Stunde und Minute

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Benutzeravatar
joni-blue
Beiträge: 1173
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Stunde und Minute + Stunde und Minute

Beitrag von joni-blue » 04.01.2013, 20:12

Kann ich per Script 08:00 Uhr + 01:00 Uhr rechnen?

Oder 08:00 Uhr + 30 Minuten?
Zuletzt geändert von joni-blue am 05.01.2013, 10:32, insgesamt 1-mal geändert.
Reboot tut gut ! ! !

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von paul53 » 04.01.2013, 20:48

So könnte es gehen:

Code: Alles auswählen

string s1; 	! Uhrzeit in hh:mm
string s2; 	! Zeitdauer in hh:mm

var h1 = s1.Substr(0,2).ToInteger();
var h2 = s2.Substr(0,2).ToInteger();
var m1 = s1.Substr(3,2).ToInteger();
var m2 = s2.Substr(3,2).ToInteger();

! Gesamt in Minuten
var t = (60 * h1) + m1 + (60 * h2) + m2;

! Nach 24 Uhr ?
if (t > 1440) {t = t - 1440;}

! Stunden abgerundet
h1 = 1 * (t / 60);
m1 = t - (60 * h1);

! Ergebnis in String
s1 = h1.ToString()+":"+m1.ToString();
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
joni-blue
Beiträge: 1173
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von joni-blue » 04.01.2013, 21:55

Hi danke dir, nur wie und wo kommen da die Zeiten rein?
Reboot tut gut ! ! !

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von DrTob » 05.01.2013, 00:50

joni-blue hat geschrieben:08:00 Uhr * 01:00 Uhr rechnen?
Was soll den davon das Ergebnis sein? 8:00 Quadrat-Uhr? :)

Benutzeravatar
joni-blue
Beiträge: 1173
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von joni-blue » 05.01.2013, 10:37

LÖSUNG:

Code: Alles auswählen

string s1 = ("10:10");    ! Uhrzeit in hh:mm
string s2 = ("01:05");    ! Zeitdauer in hh:mm

var h1 = s1.Substr(0,2).ToInteger();
var h2 = s2.Substr(0,2).ToInteger();
var m1 = s1.Substr(3,2).ToInteger();
var m2 = s2.Substr(3,2).ToInteger();

! Gesamt in Minuten
var t = (60 * h1) + m1 + (60 * h2) + m2;

! Nach 24 Uhr ?
if (t > 1440) {t = t - 1440;}

! Stunden abgerundet
h1 = 1 * (t / 60);
m1 = t - (60 * h1);

! Ergebnis in String
s1 = h1.ToString()+":"+m1.ToString();

WriteLine(s1);
Reboot tut gut ! ! !

Benutzeravatar
joni-blue
Beiträge: 1173
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von joni-blue » 09.02.2013, 14:05

Hi, bitte nochmals um Hilfe bei diesem Script!

Code: Alles auswählen

string s1 = ("09:10");    ! Uhrzeit in hh:mm
string s2 = ("00:05");    ! Zeitdauer in hh:mm

var h1 = s1.Substr(0,2).ToInteger();
var h2 = s2.Substr(0,2).ToInteger();
var m1 = s1.Substr(3,2).ToInteger();
var m2 = s2.Substr(3,2).ToInteger();

! Gesamt in Minuten
var t = (60 * h1) + m1 + (60 * h2) + m2;

! Nach 24 Uhr ?
if (t > 1440) {t = t - 1440;}

! Stunden abgerundet
h1 = 1 * (t / 60);
m1 = t - (60 * h1);

! Ergebnis in String
s1 = h1.ToString()+":"+m1.ToString();

WriteLine(s1);
Folgender Fehler tritt hier bei den eingetragenen Zeiten auf!

Antwort von s1 =
ich brauche aber 09:15 um es mit der aktuellen Uhrzeit vergleichen zu können!

danke für die Hilfe
Reboot tut gut ! ! !

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Stunde und Minute + Stunde und Minute

Beitrag von anli » 09.02.2013, 14:38

Quick and dirty (da war noch ein anderer Fehler drin: + wird nicht für string concatenation verwendet sondern #)

Code: Alles auswählen

    string s1 = ("09:10");    ! Uhrzeit in hh:mm
    string s2 = ("00:05");    ! Zeitdauer in hh:mm

    var h1 = s1.Substr(0,2).ToInteger();
    var h2 = s2.Substr(0,2).ToInteger();
    var m1 = s1.Substr(3,2).ToInteger();
    var m2 = s2.Substr(3,2).ToInteger();

    ! Gesamt in Minuten
    var t = (60 * h1) + m1 + (60 * h2) + m2;

    ! Nach 24 Uhr ?
    if (t > 1440) {t = t - 1440;}

    ! Stunden abgerundet
    h1 = 1 * (t / 60);
    m1 = t - (60 * h1);

    ! Ergebnis in String
    if (h1 < 10) { s1 = "0" # h1.ToString() # ":" # m1.ToString(); }
    if (h1 > 9) { s1 = h1.ToString() # ":" # m1.ToString(); }

    WriteLine(s1);
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von paul53 » 09.02.2013, 14:44

joni-blue hat geschrieben: Antwort von s1 =
ich brauche aber 09:15 um es mit der aktuellen Uhrzeit vergleichen zu können!

danke für die Hilfe
Machst Du einen Stringvergleich ?
Dann vielleicht so:

Code: Alles auswählen

! Ergebnis in String
if (h1 < 10)
{ s1 = "0"+h1.ToString();}
else
{ s1 = h1.ToString();}
if (m1 < 10)
{ s2 = "0"+m1.ToString();}
else
{ s2 = m1.ToString();}
s1 = s1+":"+s2;
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
joni-blue
Beiträge: 1173
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von joni-blue » 09.02.2013, 14:50

joni-blue hat geschrieben:LÖSUNG:

Code: Alles auswählen

string s1 = ("10:10");    ! Uhrzeit in hh:mm
string s2 = ("01:05");    ! Zeitdauer in hh:mm

var h1 = s1.Substr(0,2).ToInteger();
var h2 = s2.Substr(0,2).ToInteger();
var m1 = s1.Substr(3,2).ToInteger();
var m2 = s2.Substr(3,2).ToInteger();

! Gesamt in Minuten
var t = (60 * h1) + m1 + (60 * h2) + m2;

! Nach 24 Uhr ?
if (t > 1440) {t = t - 1440;}

! Stunden abgerundet
h1 = 1 * (t / 60);
m1 = t - (60 * h1);

! Ergebnis in String
s1 = h1.ToString()+":"+m1.ToString();

WriteLine(s1);
Ansatz gut geht aber nicht mit den Zahlen

string s1 = ("10:00"); ! Uhrzeit in hh:mm
string s2 = ("00:05"); ! Zeitdauer in hh:mm

da kommt dann

10:5

bei raus

DANK EURER HILFE HABE ICH ES JETZT ABER GESCHAFFT!

HIER DER RICHTIGE WEG:

Code: Alles auswählen

    string s1 = ("00:00");    ! Uhrzeit in hh:mm
    string s2 = ("00:05");    ! Zeitdauer in hh:mm

    var h1 = s1.Substr(0,2).ToInteger();
    var h2 = s2.Substr(0,2).ToInteger();
    var m1 = s1.Substr(3,2).ToInteger();
    var m2 = s2.Substr(3,2).ToInteger();

    ! Gesamt in Minuten
    var t = (60 * h1) + m1 + (60 * h2) + m2;

    ! Nach 24 Uhr ?
    if (t > 1440) {t = t - 1440;}

    ! Stunden abgerundet
    h1 = 1 * (t / 60);
    m1 = t - (60 * h1);
! Ergebnis in String
if (h1 < 10)
{ s1 = "0"+h1.ToString();}
else
{ s1 = h1.ToString();}
if (m1 < 10)
{ s2 = "0"+m1.ToString();}
else
{ s2 = m1.ToString();}
s1 = s1+":"+s2;

    WriteLine(s1);




Reboot tut gut ! ! !

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Stunde und Minute + Stunde und Minute

Beitrag von paul53 » 09.02.2013, 14:56

anli hat geschrieben:Quick and dirty (da war noch ein anderer Fehler drin: + wird nicht für string concatenation verwendet sondern #)
Beide Varianten sind möglich und auch dokumentiert.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“