Det er ikke det jeg mente.. meningen med eksperten.dk er jo at skabe en vidensdatabase, sådan at når lille Peter om 3 måneder står med samme problem, så kan han finde dette spørgsmål og finde løsningen herinde... Derfor er disse send-til-mail løsninger ikke optimale...
Fidusen er at en Date er en alm FLoat. Ikke andet. Heltals delen er antal dage siden en gang for længe siden, kan ikke huske præcis hvad men vil kunne findes i Online hjælpen, men ikke vigtigt for løsningen af opgaven.
Fidusen er så at bruge funktionerne de det eksempel padkjaer kom med. Så beregner du dig ned i gennem det.
Dette er den overordnede måde at gøre det på, eller teorien. Et eksemple kan downloades på adressen :
TDatetime typen i delphi er lavet så du bare kan Lægge til og trække fra, og så findes der div rutiner i delphi til at steppe en md. frem eller tilbage, IncMonth() hedder den vist.
sorry mange gange jeg har arbjedet som en hest idag, alle var sure, alle sager hastede :( men nu er jeg her jeg har faktisk brugt makses eksempel, så han fortjener de fleste points, men i andre må da gerne få 25 for ulejligheden :)
function Delta_mSec(Time1,Time2:TDateTime):longint; var dt : extended; begin dt:=abs(24*60*60*1000*(Time2-Time1)); if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt); end;
function Delta_Sec(Time1,Time2:TDateTime):longint; var dt : extended; begin dt:=abs(24*60*60*(Time2-Time1)); if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt); end;
function Delta_Min(Time1,Time2:TDateTime):longint; var dt : extended; begin dt:=abs(24*60*(Time2-Time1)); if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt); end;
function Delta_Hour(Time1,Time2:TDateTime):longint; var dt : extended; begin dt:=abs(24*(Time2-Time1)); if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt); end;
function Delta_Month(Time1,Time2:TDateTime):longint; var Date1,Month1,Year1 : word; Date2,Month2,Year2 : word; SwapTime : TDateTime; begin if (Time2<Time1) then begin SwapTime:=Time1; Time1:=Time2; Time2:=SwapTime; end; DecodeDate(Time1,Year1,Month1,Date1); DecodeDate(Time2,Year2,Month2,Date2); Result:=12*longint(Year2)+Month2-(12*Longint(Year1)+Month1); if (Date2<Date1) then dec(Result); end;
function Delta_Year(Time1,Time2:TDateTime):longint; var Date1,Month1,Year1 : word; Date2,Month2,Year2 : word; SwapTime : TDateTime; begin if (Time2<Time1) then begin SwapTime:=Time1; Time1:=Time2; Time2:=SwapTime; end; DecodeDate(Time1,Year1,Month1,Date1); DecodeDate(Time2,Year2,Month2,Date2); Result:=Year2-Year1; if (Month2*30+Date2<Month1*30+Date1) then dec(Result); end;
Inden du sådan opgiver så prøv lige at checke denne her :
function DiffDates( dFrom,dTo : TDateTime ) : Integer; VAR s1,s2 : TTimeStamp; begin S2 := DateTimeToTimeStamp(dTo); S1 := DateTimeToTimeStamp(dFrom); Result := S2.Date - S1.Date; end;
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := Format(\'Day between : %d\',[DiffDates(DateTimePicker1.DateTime,DateTimePicker2.DateTime)]); end;
Det så ud til at virke, så hvorfor gøre tingende sværre end højts nødvendigt
/Martin
Synes godt om
Ny brugerNybegynder
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.