Hi,
natürlich kommen so Ungenauigkeiten rein. So geht es besser:
Delphi-Quellcode:
function SumOfDateTime(dta: array of TDateTime): TDateTime;
var
i: integer;
mins: integer;
isNegative: boolean;
begin
mins := 0;
for i := Low(dta) to High(dta) do begin
dt := dta[i];
isNegative := dt < 0;
dt := Abs(dt);
if isNegative
then mins := mins - Trunc(dt) * MinsPerDay - MinuteOfTheDay(dt)
else mins := mins + Trunc(dt) * MinsPerDay + MinuteOfTheDay(dt);
end;
isNegative := mins < 0;
mins := Abs(mins);
Result := mins div MinsPerDay;
mins := mins mod MinsPerDay;
Result := Result + EncodeTime(mins div 60, mins mod 60, 0, 0);
if IsNegative then
Result := -Result;
end;
Freundliche Grüße vom marabu
PS: Jetzt teile ich die Minuten durch 60, damit die übliche Stundenzahl heraus kommt. Außerdem habe ich den Code angepasst, damit er nicht nur mit Bruchteilen eines Tages rechnet. Negative Werte werden jetzt auch verarbeitet.