Toon posts:

tijdsverschil bereken in Delphi4

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik wil het aantal uren en minuten uitrekenen tussen een tijd1 en tijd2 ik had al zoiets:

alle variabelen zijn van het type Tdatetime

tijd:=eindtijd-begintijd maar dit werkt niet goed.... :( hoe doe ik het goed ??? ik wil eigenlijk het aantal uren en minuten terug krijgen in een real of integer...

  • Onno
  • Registratie: Juni 1999
  • Niet online
Aantal uren is (eindtijd-begintijd)*24. Of nog een keer *60 voor het aantal minuten...

TDateTime rekent immers in dagen.

Verwijderd

Topicstarter
ik heb 2 maskedit boxen waar de tijd in staat in deze vorm 12:33 en 14:55 dan in een 3de editbox moet dan het verschil komen...
dus 14:55 min 12:33 dit kan je niet zomaar van elkaar aftrekken want 33-55 is dus niet goed... :'( suggesties >????

  • Onno
  • Registratie: Juni 1999
  • Niet online
*zucht*

Uren:=trunc((eind-begin)*24);
Minuten:=trunc((eind-begin)*24*60)-(Uren*60);

Verwijderd

Topicstarter
hmmzz ik heb dit maar komen vreemde getallen uit !! van 11 uur tot 12 uur is dan 0 .. :'(

var uren,minuten : integer;
beginT,eindT : real;
begin
if checkbox1.checked = False then
begin
beginT:=strTOfloat(edit3.text);
eindT:=strTOfloat(edit5.text);

Uren:=trunc((eindT-beginT)*24);
Minuten:=trunc((eindT-beginT)*24*60)-(Uren*60);

  • Onno
  • Registratie: Juni 1999
  • Niet online
Ehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhm...
alle variabelen zijn van het type Tdatetime
vs.
beginT,eindT : real;
Dat is dus _geen_ TDateTime. Evenmin als strTOfloat StrToDateTime is...

Verwijderd

Topicstarter
die had ik aangepast nadat ik jou post had gelezen... maar ik snap er nog nix van ,
dit is mijn eerste progje in delphi zou je een voorbeeldje kunnen geven van hoe ik het nou moet doen en met welke vars ??

Verwijderd

Topicstarter
ik heb het nu zo en het werkt perfect dankje !!!!!

procedure TForm1.Edit6Enter(Sender: TObject);
var uren,minuten : Ttime;
beginT,eindT : TTime;
begin
if checkbox1.checked = False then
begin
beginT:=strTOTime(edit3.text);
eindT:=strTOTime(edit5.text);
Uren:=trunc((eindT-beginT)*24);
Minuten:=trunc((eindT-beginT)*24*60)-(Uren*60);
edit6.text:=floatTOstr(minuten);
edit15.text:=floatTostr(uren);
end;
end;

Verwijderd

Topicstarter
ownee !!! hij zegt nou dat
11:33 tot 12:00 26 minuten is ... hoe komt dit ??? :?

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 05-04 17:26

Tomatoman

Fulltime prutser

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.

Pagina: 1