Hallo,
ich habe folgende Funktion geschrieben, um aus einem TTime (TDateTime) die Stunden und Minuten zu bekommen, und zwar auch dann die stunden wenn es sich um mehr als 24 stunden handelt.
Es Funktioniert auch wunderbar, allerdings gibt die Funktion 0:00 zurück wenn "Zeit" 1 ist, also exakt 24 Stunden.
Wenn ich mir das ganze beim Debuggen anschaue hat "Zeit" den wert 1, allerdings hat "Tage" nach dem Trunc den Wert 0!
Ändere ich den Quelltext auf "Tage := Trunc(1)" (also immer 1 an Trunc) ist Tage auch immer 1.
Irgendwie verstehe ich das nicht. Kann mir da vielleicht jemand auf die Sprünge helfen?
Code:
function TimeToStrInHoursMinutes(Zeit: TTime): String;
var Tage: Integer;
Stunden, Minuten: String;
begin
if Zeit >= 0 then
begin
Tage := Trunc(Zeit); // Ganzahl des TTime in Tage?!?
Stunden := IntToStr(24*Tage + StrToInt(FormatDateTime('hh', Zeit - Tage)));
Minuten := FormatDateTime('nn', Zeit - Tage);
Result := Stunden+':'+Minuten;
end
else
begin
Tage := Trunc(Zeit) * (-1);
Stunden := IntToStr(24*Tage + StrToInt(FormatDateTime('hh', Zeit + Tage)));
Minuten := FormatDateTime('nn', Zeit + Tage);
Result := '-'+Stunden+':'+Minuten;
end;
end;
PS: Die Funktion hätte man vielleicht auch anders schreiben können, verbesserungsvorschläge werden dankbar angenommen