Script Datum Morgen

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

Moderator: Co-Administratoren

Antworten
gruenerloewe
Beiträge: 16
Registriert: 08.04.2015, 12:57

Script Datum Morgen

Beitrag von gruenerloewe » 01.12.2015, 10:00

Hallo Leute,

ich bin jetzt langsam am verzweifeln. :shock:
Wie kann ich per Homematic Script auf einfachem Weg das Datum morgen bzw gestern ermitteln?

Ich habe schon versuch per Berechnung anhand des Referenzdatums (1970) das Ganze zu ermitteln.
Aber irgenwie klappt es nicht mit dem Umformatieren der Variablen in Time und zurück zu Integer

Google kann mir diesmal leider auch nicht helfen.

Habt Ihr noch eine Lösung für mich? :?:

VG

Benutzeravatar
blackhole
Beiträge: 3734
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 188 Mal
Danksagung erhalten: 588 Mal

Re: Script Datum Morgen

Beitrag von blackhole » 01.12.2015, 11:27

Beispiel-Skript (Morgen, Referenzdatum, Gestern):

Code: Alles auswählen

time test = @2015-12-01 11:30:00@;
WriteLine (test + 86400);
WriteLine (test);
WriteLine (test - 86400);
Ausgabe:

Code: Alles auswählen

2015-12-02 11:30:00
2015-12-01 11:30:00
2015-11-30 11:30:00

gruenerloewe
Beiträge: 16
Registriert: 08.04.2015, 12:57

Re: Script Datum Morgen

Beitrag von gruenerloewe » 01.12.2015, 11:50

Hi blockhole,

danke für die schnelle Antwort.
Das klappt soweit. :)

Mein Problem ist, wie kriege ich
time VAR_DATUMHEUTE = system.Date("%d.%m.%Y") in das Time Format ohne das er auf 1970 umspringt?

Wenn ich es wie oben angegeben verwende wird VAR_DATUMHEUTE leider immer ein String.
Und somit verkettet er die Werte nur = 01.12.201586400

Mit .ToTime() springt er immer auf 1970. :?

VG

gruenerloewe
Beiträge: 16
Registriert: 08.04.2015, 12:57

Re: Script Datum Morgen

Beitrag von gruenerloewe » 01.12.2015, 12:31

Hallo,

ich habe eine Lösung gefunden und etwas verschlimmbessert. :D
Hier mein Script mit dem man Tage vor und zurück rechnen kann.

Wobei VAR_TAGEPLUS die Anzahl der Tage vorwärts und
VAR_TAGEMINUS die Anzahl der Tage rückwärts bestimmt

Code: Alles auswählen

integer VAR_TAGEPLUS = 0;
integer VAR_TAGEMINUS = 0;
integer VAR_DATUMHEUTETEMP = system.Date("%F %X").ToTime();
var VAR_DATUMCALC_TEMP = VAR_DATUMHEUTETEMP + (86400 * VAR_TAGEPLUS) - (86400 * VAR_TAGEMINUS);
time VAR_DATUMCALC_TEMPTIME = VAR_DATUMCALC_TEMP;
string VAR_DATUMCALC = VAR_DATUMCALC_TEMPTIME.Format("%d.%m.%Y");
Auch ein blindes Huhn findet mal ein Korn :mrgreen:

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

Re: Script Datum Morgen

Beitrag von paul53 » 01.12.2015, 12:57

Das mag zwar irgendwie funktionieren, ist aber nicht ganz korrekt. Es fehlen zwei Umwandlungen.

Code: Alles auswählen

integer VAR_TAGEPLUS = 0;
integer VAR_TAGEMINUS = 0;
integer VAR_DATUMHEUTETEMP = system.Date("%F %X").ToTime().ToInteger();
integer VAR_DATUMCALC_TEMP = VAR_DATUMHEUTETEMP + (86400 * VAR_TAGEPLUS) - (86400 * VAR_TAGEMINUS);
string VAR_DATUMCALC = VAR_DATUMCALC_TEMP.ToTime().Format("%d.%m.%Y");
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“