Avatar billede kennethv Nybegynder
01. september 2009 - 13:39 Der er 4 kommentarer og
1 løsning

Samlign af to datoer/måneder

Jeg har brug for en måde at skulle udføre nogle rutiner når der gået 1 måneder og når der gået 2 måneder.

Har rodet med MonthsBetween, men jeg synes ikke at den gør det jeg troede den skulle. Jeg havde opfattelsen at hvis det var sådanne her:

        case monthsbetween(Date,query1.FieldByName('DateOfRetire').AsDateTime) of
          0 : begin
                ShowMessage('0 måneder er gået');
          end;
          1 : begin
                ShowMessage('1 måned er gået');
          end;
          2 : begin
                ShowMessage('2 måneder er gået');
          end;
        end;

Men sådan er det ikke lige. Den beregner at 1 måned = 30.4375. Men de rutiner jeg skal udføre kan ikke gøres før det er den 31 og 62 dag.

Så hvordan kan man klare den?
Avatar billede kroning Nybegynder
01. september 2009 - 13:51 #1
Er det den 31. i måneden du mener eller skal det være efter 31 og 62 dage ?
Avatar billede kennethv Nybegynder
01. september 2009 - 13:56 #2
:) Ja, det efter de dage.
Avatar billede kroning Nybegynder
01. september 2009 - 14:08 #3
Så kan du vel bruge DaysBetween

if DaysBetween(date,query1.FieldByName('DateOfRetire').AsDateTime)=31 then
  ShowMessage('1 måned er gået');

if DaysBetween(date,query1.FieldByName('DateOfRetire').AsDateTime)=62 then
  ShowMessage('2 måneder er gået');
Avatar billede kennethv Nybegynder
01. september 2009 - 15:04 #4
Jeg tror at jeg kan løse det ved en CASE OF løsning og så have intervallet [1..31] og [32..] for hvis DateOfRetire er den 31-08-2009 og date er idag så vil forskellen være 1, hvilket er godt nok, for så er jeg heller ikke heelt så afhængig af at det liige skal ske præcis 1-2 måneder efter.

Du kan ligge et svar, for det du skrev sætte nogle andre tanker igang.
Avatar billede kroning Nybegynder
01. september 2009 - 15:49 #5
ok, og hvis du ikke allerede ved det så tænk på at Date og f.eks. .AsDateTime jo blot er double tal som man kan trække fra og ligge til. Dvs. hvis du skal ligge 10 dage til i dag så er det:
x:=Date+10;

hvor x er defineret:
var
  x : double;
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