![]() ![]() |
Einfach kurz mal aus meiner Erinnerung:
Mach aus der Differenz den Typ TDateTime und benutze die Funktion DecodeDate |
Zitat: |
procedure TForm1.Button1Click(Sender: TObject); var Datum1, Datum2:TDateTime; //double; //real; diff:TDateTime; //double; //real; J,M,T:word; begin Datum1:=strtodate('11.11.2010'); Datum2:=strtodate('12.12.2010'); diff:=datum2-datum1; decodedate(diff,J,M,T); Label1.caption:= 'Die Differenz beträgt: '+inttostr(J)+' Jahre '+inttostr(M)+'Monate '+ inttostr(T)+' Tage'; end; |
![]() ![]() |
Habe ich vergessen.
Delphi hat ein "kleinstes" Datum. Das musst du vom Ergebnis abziehen. Bei den Jahren musst du erstmal 1900 abziehen. Bei den Monaten und Tagen musst du einfach mal nachsehen. Entweder Delphi-Hilfe aufrufen oder ausprobieren für eine Differenz von 0. |
Zitat: |
... {Differenz 0 ist: 1899 Jahre 12 Monate 30 Tage} Datum1:=strtodate('11.11.2010'); Datum2:=strtodate('13.11.2010'); diff:= datum2-datum1; //diff:=0; decodedate(diff,J,M,T); j:=j-1900; m:=m-12; t:=t-30; ... |
![]() ![]() |
Mit den Funktionen
EncodeDate und DaysBetween müsste es gehen. Edit: Mit EncodeDate wird es doch nicht gehen. Benutze stattdessen IncDay. |
Zitat: |
procedure TForm1.Button4Click(Sender: TObject); var Datum1, Datum2,Neudatum:TDateTime; //double; //real; Tage:integer; begin Datum1:=strtodate('11.11.2010'); Datum2:=strtodate('12.11.2010'); Tage:=DaysBetween(datum1,datum2); Neudatum:=incDay(now,tage); Label2.Caption:= datetostr(Neudatum); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!