Avatar billede martinr Nybegynder
17. februar 2004 - 04:15 Der er 2 kommentarer og
1 løsning

Sammenligning af tidspunkter

Hej eksperter

Jeg har brug for en funktion, der kan sammenligne 2 tidspunkter med hinanden og oplyse forskellen imellem dem. Den skal kunne sammenligne tidspunkter bestående af timer, minutter og sekunder.

F.eks. hvis jeg fodrer funktionen med tidspunkterne 14:30:15 og 15:00:30, skal funktionen returnere forskellen på 00:30:15.

I må meget gerne komme med et konkret kodeeksempel.

På forhånd tak for jeres hjælp.
Avatar billede hrc Mester
17. februar 2004 - 06:32 #1
Det er meget let med to TDateTime variable.

var
  t1, t2 : TDateTime;
begin
  t1 := now;

  ... do something

  t2 := now;

  MessageDlg(format('The difference: %s',[TimeToStr(t2-t1)]),mtInformation,[mbOK],0);
end;

Som du ser er der slet ikke brug for en funktion - det hele er smart implementeret vha TDateTime som er en double hvor heltalsdelen er antallet af dage siden Kong Volmer og decimaldelen er antallet af milisekunder siden dagens start. Ved at trække t1 fra t2 får man netop forskellen og den kører man gennem en TimeToStr() og violá, så har du forskellen.

Der er i øvrigt en bunke af funktioner til at behandle dato og tider: Tryk F1 på TimeToStr og følg linket "Datetime routines".

Åhh, skidt. Du får lige funktionen også:

function DateTimeDiff(const aTime1, aTime2 : TDateTime): TDateTime;
begin
  if aTime1 > aTime2 then
    result := aTime1 - aTime2
  else
    result := aTime2 - aTime1;
end;
Avatar billede hrc Mester
17. februar 2004 - 06:45 #2
Du kunne også bruge en DateTimeToStr hvis du ville være helt sikker på at rutinen virker på tværs af datoskift.

Blandt rutinerne finder jeg også: MilliSecondsBetween().

Den kan bruges hvis du vil have forskellen i milisekunder (MSecsPerDay).
Avatar billede martinr Nybegynder
17. februar 2004 - 11:41 #3
Ok, mange tak, hrc.

Jeg kender godt til TDateTime og mange af de der "Datetime routines", men jeg tænkte bare ikke over, at det kunne gøres så let og lige til.

Jeg takker for din hjælpsomhed og også for din kommentar, selvom det ikke lige er det, jeg har brug for. Dit første svar var tilfredsstillende nok for mig. Det er rart at vide, at der er nogle at spørge, hvis man ikke lige selv kan finde svar.

Du får pointene af mig, hvis jeg ellers kan finde ud af det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester