![]() |
Zeit addieren
Hi,
habe mal wieder ein Problem :oops: und zwar möchte ich beliebig viele Zeiten addieren können nur ich bekomme das nicht hin kleines Beispiel : x dauert 1 Stunden 43 Minuten und 32 Sekunden -> im Format 01:43:32 y dauert 4 Stunden 32 Minuten und 29 Sekunden -> im Format 04:32:29 z dauert 5 Stunden 54 Minuten und 12 Sekunden -> im Format 05:54:12 und daraus dann die Insgesamtdauer das habe ich schon mit DateTimePicker hinbekommen nur wenn das Ergebnis dann über 23 Stunden ist fängt es ja wieder bei 00 an aber ich will das der weitergeht oder eine andere lösung möchte die verschiedenen Zeiten einfach nur zusammenzählen können ... gib da doch bestimmt bessere u einfachere Lösungen oder ? gruß TimmA. |
Re: Zeit addieren
Hai TimmA,
hier mal eine Idee. Ist aber nicht getestet *gg*
Delphi-Quellcode:
In diesem Demo müssen die Zeiten als tTime in dem Array gespeichert sein.
var
aZeiten: array[1..10] of tTime; //Array mit den Zeiten iTage, // Summe Tage iStunden, // Summe Stunden iMinuten, // Summe Minuten iSekunden: Integer; //Summe Sekunden procedure TForm1.Button1Click(Sender: TObject); var ndx: Integer; Hour, Min, Sec, MSec: Word; // Temp Variablen begin iTage := 0; iStunden := 0; iMinuten := 0; iSekunden := 0; for ndx := Low(aZeiten) to High(aZeiten) do begin DecodeTime(aZeiten[ndx], Hour, Min, Sec, MSec); // Die Einzelnen Zeilteile addieren; iStunden := iStunden + Hour; iMinuten := iMinuten + Min; iSekunden := iSekunden + Sec; end; iMinuten := iMinuten + (iSekunden div 60); iSekunden := iSekunden mod 60; iStunden := iStunden + (iMinuten div 60); iMinuten := iMinuten mod 60; iTage := iStunden div 24; iStunden := iStunden mod 24; end; Dann addiere ich ersteinmal alle Stunden,Minuten und Sekunden. (For-Schleife) Im letzen Teil werden die Überlaufe berücksichtigt. z.B.: 123 sekunden sind 2 Minuten und 3 Sekunden. Die Minuten werden also um 2 erhöht und die sekunden auf 3 gesetzt. |
Re: Zeit addieren
Hi,
danke schonmal ! Ich werden das jetzt gleich mal ausprobieren :P |
Re: Zeit addieren
das sollte einfacher gehen, da TDateTime Zeiten in der Form: TageSeitStartDatum.MillisekSeitMitternacht speichert:
Delphi-Quellcode:
Du übergibst einfach ein Array von TTime-werten und bekommst das Ergebnis in der Form des TimRec-Rekords.
type
TimeRec = Record Stunden : Integer; Minuten : Integer; Sekunden : Integer; Millisek : Integer; end; function AddTimes(Zeiten : Array of TTime) : TimeRec; var TempTime : TDateTime; Hour, Min, Sec, MSec : Word; i : Integer; begin TempTime := 0.0; for i := Low(Zeiten) to High(Zeiten) do TempTime := TempTime+Zeiten[i]; DecodeTime(TempTime,Hour,Min,Sec,MSec); Result.Stunden := Trunc(TempTime)*24+Hour; // Result.Minuten := Min; Result.Sekunden := Sec; Result.Millisek := MSec; end; Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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