Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi den unterschied zweier Datum-Werte berechnen (https://www.delphipraxis.net/44665-den-unterschied-zweier-datum-werte-berechnen.html)

jonny 22. Apr 2005 13:58


den unterschied zweier Datum-Werte berechnen
 
Hallo,
Ich möchte gerne zwei Datum-Werte mit einander vergleichen und den Unterschied zurückbekommen.

Beispiel ich gebe heutieges Datum ein 22.04.2005 und ein belibieges Datum in der Vergangenheit z.B. 28.02.2004 und zurück möchte ich gerne 23.01.0001 erhalten.

Ich gehe wie folgt vor nur das ich nicht das richtige herausbekomme.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Tage, Jahre, Monate: Integer;
    jahr, monat, tag: word;
    jahr1, monat1, tag1: word;

    GebDatum: TDate;
begin
    GebDatum:=DateTimePicker1.Date;
    DecodeDate(Now, jahr1, monat1, tag1);
    DecodeDate(GebDatum, jahr, monat, tag);

    Jahre:=YearsBetween(Now, GebDatum);
    GebDatum:=StrToDate(IntToStr(tag) + '.' + IntToStr(monat) + '.' + IntToStr(jahr1));

    Monate:=MonthsBetween(Now, GebDatum);
    GebDatum:=StrToDate(IntToStr(tag) + '.' + IntToStr(monat1) + '.' + IntToStr(jahr1));

    Tage:=DaysBetween(Now, GebDatum);

    Edit1.Text:=IntToStr(Tage) + ', ' + IntToStr(Monate) + ', ' + IntToStr(Jahre);
end;

Minz 22. Apr 2005 14:03

Re: den unterschied zweier Datum-Werte berechnen
 
Hallo, wie kommst du auf 23?

jonny 22. Apr 2005 14:09

Re: den unterschied zweier Datum-Werte berechnen
 
Naja der unterschied ist doch ein volles Jahr ein voller Monat und 23 Tage weil der Februar 2004 ja 29 Tage hate.

Dann nimmt er ja den einen Tag aus Februar mit und die 22 aus März.

alcaeus 22. Apr 2005 14:14

Re: den unterschied zweier Datum-Werte berechnen
 
Hallo jonny,

sieh dir mal in der OH die Funktionen [oh]DaysBetween, MonthsBetween, YearsBetween[/oh] an. In Verbindung mit Delphi-Referenz durchsuchenDaysInAMonth kannst du auch das "beruechtigte" Februar-Schaltjahr-Problem in den Griff bekommen.

Greetz
alcaeus

Waldteufel 22. Apr 2005 14:14

Re: den unterschied zweier Datum-Werte berechnen
 
Hi.

Und was bekommst du stattdessen raus?

jonny 22. Apr 2005 14:27

Re: den unterschied zweier Datum-Werte berechnen
 
Stattdessen bekomme ich 05, 01, 0001 raus. Jahr und monat sind ja richtig aber die Tage Passen nicht und da ist noch ein Fehler drin nicht nur der mit den Schaltjahren.

Waldteufel 22. Apr 2005 14:28

Re: den unterschied zweier Datum-Werte berechnen
 
Hi.

Zitat:

Zitat von jonny
Stattdessen bekomme ich 05, 01, 0001 raus. Jahr und monat sind ja richtig aber die Tage
Passen nicht und da ist noch ein Fehler drin nicht nur der mit den Schaltjahren.

Es sind aber 5 Tage zwischen einem 22. und einem 28. ;-)

Sharky 22. Apr 2005 14:31

Re: den unterschied zweier Datum-Werte berechnen
 
Hai jonny,

warum weisst Du GebDatum denn mehrmals Werte zu?
Zitat:

Delphi-Quellcode:
begin
.
    GebDatum:=DateTimePicker1.Date;
.
    GebDatum:=StrToDate(IntToStr(tag) + '.' + IntToStr(monat) + '.' + IntToStr(jahr1));
.
    GebDatum:=StrToDate(IntToStr(tag) + '.' + IntToStr(monat1) + '.' + IntToStr(jahr1));
end;


jonny 22. Apr 2005 14:35

Re: den unterschied zweier Datum-Werte berechnen
 
Weil wenn ich z.B. die Tage bekommen will weise ich GebDatum das heutige Jahr und Monat zu denn sonnst würde ich ja die ganzen Tage bekommen von dem Ursprungs Datum (365 fürs Jahr 31 für den Monat und noch die 23 von dem nicht vollendeten Monat), ich möchte aber nur die Tage haben die kein Monat sind. Deswegen weise ich GebDatum das heutige Jahr und den heutigen Monat zu.

Sharky 22. Apr 2005 14:46

Re: den unterschied zweier Datum-Werte berechnen
 
Alles klar.

Allerdings empfehle ich Dir dann lieber Delphi-Referenz durchsuchenEncodeDate zu verwenden ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz