Habe ich noch nicht gesehen. Aber wie erklärt sich dann das: http://homematic-forum.de/forum/viewtop ... 27&t=12056?paul53 hat geschrieben:Beide Varianten sind möglich und auch dokumentiert.anli hat geschrieben:Quick and dirty (da war noch ein anderer Fehler drin: + wird nicht für string concatenation verwendet sondern #)
Stunde und Minute + Stunde und Minute
Moderator: Co-Administratoren
- 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
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-Hilfe • erweiterter Skript-Parser
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-Hilfe • erweiterter Skript-Parser
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 177 Mal
- Kontaktdaten:
Re: Stunde und Minute + Stunde und Minute
Ja, aber das + für String-Concatenation zu verwenden birgt gewisse Fallstricke beim Casting von Variablen:paul53 hat geschrieben:Beide Varianten sind möglich und auch dokumentiert.
Code: Alles auswählen
real a = 1.0;
string c = "x";
WriteLine(a + c); ! 1.000000
WriteLine(c + a); ! x1.000000
WriteLine(a # c); ! 1.000000x
WriteLine(c # a); ! x1.000000
Grüße, Hobbyquaker
Re: Stunde und Minute + Stunde und Minute
Wer Real- und String-Werte ohne Typwandlung verketten will (quick and dirty), ist selbst schuld.
Code: Alles auswählen
a = a.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)
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 177 Mal
- Kontaktdaten:
Re: Stunde und Minute + Stunde und Minute
Stimme Dir ja zu, aber wenn Du mal Dein Blick über die üblichen Homematic-Scripte (sowohl die von eQ3 selbst als auch die die Community so verbreitet) schweifen lässt siehst Du dass das "gängige Praxis" istpaul53 hat geschrieben:Wer Real- und String-Werte ohne Typwandlung verketten will ist selbst schuld.
Re: Stunde und Minute + Stunde und Minute
Da ich auch gerade dabei bin, mit Zeiten zu rechnen bin ich auf diesen Beitrag gestoßen und möchte mal meine Alternative vorstellen:
Ich nutze einfach den Datentyp time. Da ich aber (erstmal) nur Stunden und Minuten brauche, baue ich mir einen gültigen Zeitstring aus dem aktuellen Datum und meiner Wunschzeit zusammen und wandle ihn ins time-Format (ToTime()) um, mit dem ich dann beliebig rechnen (addieren und subtrahieren von Sekunden) und vergleichen kann:
Das soll nur als Denkanstoß dienen, um nicht die Zeitstrings zerlegen zu müssen...
edit:
Um beim Beispiel zu bleiben:
Die sind notwendig, da das time-Format am 01.01.1970 um 01:00:00 beginnt...
Ronny
Ich nutze einfach den Datentyp time. Da ich aber (erstmal) nur Stunden und Minuten brauche, baue ich mir einen gültigen Zeitstring aus dem aktuellen Datum und meiner Wunschzeit zusammen und wandle ihn ins time-Format (ToTime()) um, mit dem ich dann beliebig rechnen (addieren und subtrahieren von Sekunden) und vergleichen kann:
Code: Alles auswählen
var zeitstring; ! nur zur Veranschaulichung - ich schreibe alles in eine Zeile
! (Systemvariable 'weckzeit' soll lediglich String mit Uhrzeit enthalten)
weckzeit.Variable("11:00:00"); ! Weckzeit ist 11:00 Uhr
zeitstring = system.Date("%Y-%m-%d") # " " # weckzeit.Variable(); ! 2013-04-02 11:00:00
! Addieren von 10 Minuten (10 * 60 Sekunden) zur Weckzeit:
weckzeit.Variable((zeitstring.ToTime() + (10 * 60)).Format("%H:%M:%S"));
WriteLine(weckzeit.Variable()); ! Weckzeit ist nun 11:10 Uhr
edit:
Um beim Beispiel zu bleiben:
Code: Alles auswählen
string s1 = ("00:00"); ! Uhrzeit in hh:mm
string s2 = ("00:05"); ! Zeitdauer in hh:mm
WriteLine(((("2000-01-01 " # s1 # ":00").ToTime() + (("1970-01-01 " # s2 # ":00").ToTime() + 3600))).Format("%H:%M:%S"));
Code: Alles auswählen
+ 3600
Ronny