Zitat von
Kalfany:
warum nicht so?
Label1.Caption := FormatDateTime('hh:nn:ss', CallStartTime-Now());
Ganz einfach ... weil die Zeit dann nach 24h von vorne beginnt
.
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE}
uses
DateUtils, SysUtils;
function GetTimeDifferenceAsString(StartTime, EndTime : TDateTime) : string;
var
TimeDifferenceInSeconds : Integer;
begin
TimeDifferenceInSeconds := SecondsBetween(EndTime, StartTime);
Result := Format('%.2d:%.2d:%.2d',
[TimeDifferenceInSeconds div 3600,
TimeDifferenceInSeconds mod 3600 div 60,
TimeDifferenceInSeconds mod 60]);
end;
begin
writeln(GetTimeDifferenceAsString(Yesterday, Now));
writeln(FormatDateTime('hh:nn:ss', Yesterday - Now));
readln;
end.
Die Ausgabe bei mir im Moment:
40:24:08
16:24:08
Sobald ein Telefonat also länger als 24h dauert, wäre die Anzeige nicht korrekt. Ist für die Implementation hier evtl. nicht ganz so wichtig, aber irgendwann haben Informatiker auch mal gedacht 2 Byte reicht aus um das Jahr zu speichern ... .
EDIT:
Es gibt übrigens auch noch einen Sonderfall, den Du behandeln solltest. Und zwar die Zeitumstellung. Da kann es durchaus passieren, daß die Endzeit vor der Startzeit liegt.