![]() |
Stunden/Minuten in Dezimalwerten
Hallo
Ich ermittle in meinem Programm die Stunden zwischen zwei Zeitangaben z.b von 09:00 bis 10:25 Als Ausgabe lass ich mir die Stunden dann in Dezimalwerten anzeigen in diesem Fall kommt also (1,41666666666667)raus. Jetzt hab ich aber 1. das Problem, wenn ich von 07:00 bis 08:00 ermittle müsste ja (1,0) rauskommen aber, es kommt (0,999999999999999) raus. Wenn ich aber von 08:00 bis 09:00 ermittle dann zeigt er mir (1,0) an also richtig, blos woran liegt das ? Kann es sein das es was mit Primzahlen zu tun hat ? weil ja die (7) eine wäre. Das 2. Problem ist das ich nur zwei stellen nach dem Komma anzeigen möchte, wie könnte ich dies lösen?
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject); var Start, Ende, Gesamt: TDateTime; begin Start := StrToDateTime(eStart.Text); Ende := StrToDateTime(eEnde.Text); Gesamt:= (Ende - Start); eGesamt.Text := FloatToStr(24*(Gesamt)); //Dezimalausgabe end; |
Re: Stunden/Minuten in Dezimalwerten
Nimm besser einen TDateTimePicker
|
Re: Stunden/Minuten in Dezimalwerten
Mit
Delphi-Quellcode:
bekommst Du schon den Nachkommaanteil Deines TDateTime Wertes, diesen müsstest Du nur noch in Stunden umrechnen.
Frac(Gesamt);
|
Re: Stunden/Minuten in Dezimalwerten
Zitat:
Delphi-Quellcode:
label1.caption := format('%.2f',[Gesamt*24]) ;
|
Re: Stunden/Minuten in Dezimalwerten
TTime/TDate/TDateTime sind eigentlich nur Double (reelle Typen)
und diese haben nunmal Rundungsfehler. Diese kannst du dann höchstens selber entsprechend der gewünschten Auflösung auf passende Werte runden. |
Re: Stunden/Minuten in Dezimalwerten
Also das mit den Kommastellen funktioniert schon mal. Ich lass aber besser 3 Stellen nach dem Komma anzeigen ist wohl nachher nach dem addieren genauer :mrgreen: oder :gruebel: Das (0,999999999999999) Problem ist damit ebenfalls gelöst, zumindest zeigt er bei 07:00 - 08:00 jetzt 1,000 an :-D
DANKE FÜE DIE HILFE !!! |
Re: Stunden/Minuten in Dezimalwerten
Zitat:
Aber im Normalfall sollte es wohl klappen :angel2: |
Re: Stunden/Minuten in Dezimalwerten
FPU ?
Oder wäre es besser die Zeit zwischen zwei Zeitangaben erst in reine Minuten umzurechnen und dann erst alle addieren und in Stunden (Dezimal) umrechnen ? Blos wie mach ich das :gruebel: |
Re: Stunden/Minuten in Dezimalwerten
moin,
es gibt in der RTL dazu viele hilfreiche Funktionen, die du verwenden könntest. Oder aber du schreibst dir selbst ein paar kleine Funktionen, die das Problem lösen. Ich würde die beiden Daten in Sekunden umrechnen und anschließend vom größeren Wert den kleineren abziehen. Dann hast du die Differenz in Sekunden und müßtest dann lediglich von Sekunden in Minuten/Stunden umrechnen. |
Re: Stunden/Minuten in Dezimalwerten
Wenn ich nur mal "Minuten" in der Delphihilfe eingebe bekomme ich zb. für "DateUtils" ein haufen "Routinen" ausgespuckt. Aubacke sich dort erstmal durchfinden :-D Na OK ich habe ja noch ein paar Jährchen Zeit :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz