Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - SecondsBetween + Zeitdifferenz berechnen funktioniert nicht
sunshineh - Di 28.10.08 10:32
Titel: SecondsBetween + Zeitdifferenz berechnen funktioniert nicht
Hallo,
warum funktioniert das nicht?!
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var temp, temptime : string; begin temptime := FormatDateTime('hh:mm:ss', StrtoTime(temp)); XMLEinstellTimer.Interval := SecondsBetween(Now,StrtoTime(temptime))*1000; |
sunshineh - Di 28.10.08 10:49
Das Datum ist mir eigentlich egal.
Ich möchte nur, dass der Timer zu der Uhrzeit, die ich in temp gespeichert habe, startet.
wenn ich nun um 9:49Uhr in Temp 13:00 drin stehen hab, soll die OnTimer-Fkt heute um 13:00 starten, wenn ich in Temp 8:00 drin stehen hab, dann also morgen früh um 8:00.
Delete - Di 28.10.08 10:52
Und woher soll der Timer wissen, ob heute, morgen oder nächste Woche, wenn Du kein Datum angibst?
sunshineh - Di 28.10.08 10:56
Wie kann ich dann sagen, dass er als Datum das heutige nimmt bzw. kann ich Now auch ohne Datum verwenden?
Delete - Di 28.10.08 11:00
Heute 00:00:00 ergibt sich aus trunc(Date). Da dann noch Frac(StrToTime(temptime)) dazu und es sollte passen.
sunshineh - Di 28.10.08 11:14
Ich hätte es nun so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| temptime := StrtoTime(FormatDateTime('hh:mm:ss', temp)); temptimenow := StrtoTime(FormatDateTime('hh:mm:ss', now)); if temptime < temptimenow then XMLEinstellTimer.Interval := ((24*60*60)- SecondsBetween(temptimenow,temptime))*1000 else XMLEinstellTimer.Interval := (SecondsBetween(temptimenow,temptime))*1000; |
Delete - Di 28.10.08 11:18
Nochmal zum Verständnis: TDateTime ist eine double. Der Vorkommaanteil bestimmt das Datum und der Nachkommaanteil die Uhrzeit. Ich würde nun die aktuelle Uhrzeit (und nur diese) ermitteln und mit temp vergleichen. Wenn temp > jetzt ist, ergibt sich temptime wie oben beschrieben (Datum von heute), ansonsten 1 addieren (enstspricht morgen).
nahpets - Di 28.10.08 11:20
Du darfst von Now nur den Nachkommaanteil nehmen.
Delphi-Quelltext
1:
| XMLEinstellTimer.Interval := (SecondsBetween(now - trunc(now),temptime))*1000; |
Delete - Di 28.10.08 11:23
Oder mit Frac ;)
nahpets - Di 28.10.08 11:49
DeddyH hat folgendes geschrieben : |
Oder mit Frac ;) |
Ja, hast recht, fiel mir nur gerade nicht ein :-(
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!