Een tijd wordt in Delphi opgeslagen in een floating-point getal, namelijk een Double. Het type TDateTime in feite gewoon een Double. Het gedeelte voor de komma geeft de dag aan, het gedeelte erachter de fractie van de dag die al verstreken is.
<font face="Courier New">var
Tijd1: TDateTime;
Tijd2: Double;
Dag: Integer;
UurMinSec: TDateTime;
begin
Tijd1 := 2.25; // 2 en een kwart dag (dus 6 uur 's ochtends)
Tijd2 := Tijd1; // Double = TDateTime
Dag := Trunc(Tijd1);
UurMinSec := Frac(Tijd1);
end;
</font>
Nog een paar voorbeelden. Lees in Delphi in ieder geval de helptekst bij FormatDateTime.
<font face="Courier New">function Tijdsverschil(Begintijd, Eindtijd, Opmaakformaat: string): string;
var
Verschil: TDateTime;
begin
Verschil := StrToDateTime(Eindtijd) - StrToDateTime(Begintijd);
Result := FormatDateTime(Opmaakformaat, Verschil);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
VerschilInDagen: Integer;
RestVerschil: TDateTime; // TDateTime is hetzelfde als Double
begin
ShowMessage(Tijdsverschil('5:15:59', '20:17:58', 't'));
ShowMessage(Tijdsverschil('5:15:59', '20:17:58', 'hh:nn:ss'));
// Pas op: het jaartal 02 wordt geinterpreteerd als 1902!
ShowMessage(Tijdsverschil('1-1-2000 5:15:59', '31-12-2002 20:17:58', 'c'));
ShowMessage(Tijdsverschil('1-1-2000 5:15:59', '31-12-2002 20:17:58',
'"Het verschil is" d mmmm yyyy, h:nn uur, ss "seconden"'));
end;</font>
Een goede grap mag vrienden kosten.