Avatar billede kennethv Nybegynder
01. august 2009 - 02:00 Der er 6 kommentarer og
1 løsning

Hvordan sammenligner man to datoer?

Jeg har set funktionen DayBetween, men den giver det samme tal selvom det er 1 dag før tid eller efter tid. Er på jagt efter at få af vide hvis en deadline er over tid skulle den give mig et negativt tal.

Er der en funktion til det?
Avatar billede arne_v Ekspert
01. august 2009 - 02:50 #1
Hvis det er TDateTime du bruger kan du vel bare trække dem fra hinanden.
Avatar billede hrc Mester
01. august 2009 - 10:40 #2
I DateUtils er der et væld af funktioner til det. Den du skal bruge er SameDate.
Avatar billede hrc Mester
01. august 2009 - 10:49 #3
Det er måden at gøre det på for hvis du vil sammenligne dato og tid, bliver der problemer når man subtraherer de to.

TDateTime er en forklædt double hvor dagene står i heltalsdelen og klokkeslættet står i decimaldelen (i antal ms fra midnat). Der er altså ikke brug for alle de decimaler som en double kan indeholde og det tager SameDateTime højde for

begin
  if SameDate(DateTimePicker1.Date,DateTimePicker2.Date) then
    MessageDlg('Datoerne er ens',mtInformation,[mbOK],0);
end;
Avatar billede hrc Mester
01. august 2009 - 10:58 #4
Undskyld - læste ikke spørgsmålet, undskyld.

Det er let at lave en funktion som gør det:

function DaysPastDeadline(aDate, aDeadline: TDateTime): integer;
begin
  result := DateOf(aDeadline) - DateOf(aDate); // sådan som Arne foreslog
end;


eller en variant

function TForm1.IsPastDeadline(aDate, aDeadline: TDateTime): boolean;
begin
  result := DateOf(aDate) > DateOf(aDeadline);
end;
Avatar billede hrc Mester
01. august 2009 - 11:31 #5
Åhh ja. DaysPastDeadline eksisterer allerede med navnet CompareDate (alt sammen i DateUtils)
Avatar billede arne_v Ekspert
13. september 2009 - 03:45 #6
kenneth ?
Avatar billede kennethv Nybegynder
14. september 2009 - 09:31 #7
Ja, undskyld det sene svar. CompareDates virker helt fint.
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

IT-JOB