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 Prüfe Datum ob älter als ein Jahr (https://www.delphipraxis.net/137168-pruefe-datum-ob-aelter-als-ein-jahr.html)

LokutusvB 15. Jul 2009 13:23


Prüfe Datum ob älter als ein Jahr
 
Hallo Leute,

wie man die Differenz zweier Daten berechnen kann, darüber findet man viele Informationen im Netz. Aber vielleicht geht das ja auch total einfach ohne Schaltjahrberücksichtigung, Umrechnungen usw. .

Ich habe ein gegebenes Datum und das aktuelle Datum. jetzt möchte ich einfach prüfen, ob das gegebene Datum älter als ein Jahr ist, genau ein Jahr oder eben noch nicht ein Jahr vergangen ist.

Spontan fällt mir als einfachste Möglichkeit ein, Jahr, Monat und Tag zu vergleichen geht. Geht das auch anders und einfacher?

himitsu 15. Jul 2009 13:27

Re: Prüfe Datum ob älter als ein Jahr
 
Also wenn du Schlatjahre nicht berücksichtigen willst, dann nimm das Datum als TDateTime und prüfe deren Differenz (Ganzzahlanteil = Tage)

LokutusvB 15. Jul 2009 13:32

Re: Prüfe Datum ob älter als ein Jahr
 
Eben wegen dieser Schaltjahrproblematik (man findet oft Berechnungen mit 365,25) ist mir pauschal nur die Lösung mit Vergleich Jahr, Monat und Tag eingefallen. Da das ganze für Garantiezwecke benötigt wird, müßte ich das Schaltjahr einbeziehen bzw. irgendwie umgehen können. Das habe ich im ersten Beitrag etwas unglücklich ausgedrückt.

aaaaaaaaaa_10 15. Jul 2009 13:35

Re: Prüfe Datum ob älter als ein Jahr
 
Du wirst nicht drum rum kommen, Schaltjahrprüfungen durchzuführen, denke ich

Wolfgang Mix 15. Jul 2009 13:49

Re: Prüfe Datum ob älter als ein Jahr
 
Schau mal hier:
http://www.delphipraxis.net/internal...039188#1039188

LokutusvB 15. Jul 2009 14:02

Re: Prüfe Datum ob älter als ein Jahr
 
Danke Wolfgang Mix, die Berechnung ist super und einfach :). Ist die 4. Stelle eine 0, dann ist noch kein Jahr vergangen, ansonsten eben X Jahre. Ich hätte es etwas umständlicher vorgehabt und Tage, Monate und Jahre gesondert betrachtet.

Also nochmals Danke! :)

Wolfgang Mix 15. Jul 2009 14:08

Re: Prüfe Datum ob älter als ein Jahr
 
Gerne wieder,
hatte gehofft, der Mod würde den Code in der Code-Library ablegen.
Dann wäre er leichter zu finden.

Reinhard Kern 15. Jul 2009 14:23

Re: Prüfe Datum ob älter als ein Jahr
 
Zitat:

Zitat von Wolfgang Mix
Gerne wieder,
hatte gehofft, der Mod würde den Code in der Code-Library ablegen.
Dann wäre er leichter zu finden.

Hallo,

klar, was nicht VCL ist, ist hier unerwünscht.

Ich benutze bisher für etwas allgemeinere Fälle die C-Funktion julian, die für Tag, Monat, Jahr einen Longint zurückliefert in Tagen unter Berücksichtigung von Schaltjahren. 2 mal angewendet und subtrahiert ergibt den Abstand in Tagen. Ich würde dann einfach 365 Tage Garantie geben, es ist doch sehr unwahrscheinlich, dass es gerade auf diesen einen Tag ankommt, und falls doch, wird sich der Kunde beschweren. Da das aber in C formuliert ist, kann es hier auch nicht veröffentlicht werden. Es gibt aber Leben ausserhalb Delphi.

Gruss Reinhard

HeikoAdams 15. Jul 2009 14:29

Re: Prüfe Datum ob älter als ein Jahr
 
Schau mal in der Online Hilfe von Delphi unter YearsBetween bzw. YearSpan nach, ob Du damit ans Ziel kommst.

Wolfgang Mix 15. Jul 2009 15:25

Re: Prüfe Datum ob älter als ein Jahr
 
[quote="Reinhard Kern"]
Zitat:

Zitat von Wolfgang Mix
Gerne wieder,
hatte gehofft, der Mod würde den Code in der Code-Library ablegen.
Dann wäre er leichter zu finden.

Hallo,

klar, was nicht VCL ist, ist hier unerwünscht.

Ich benutze bisher für etwas allgemeinere Fälle die C-Funktion julian, die für Tag, Monat, Jahr einen Longint zurückliefert in Tagen unter Berücksichtigung von Schaltjahren.

Code fuer den julianischen Tag sind mit Vorsicht zu geniessen.
Man muss prüfen, ob der Ubergang vom 4.10.1582 auf 15.10.1582 korrekt behandelt wird.
Bei durchgängiger Tageszählung gelten noch die älteren Schaltjahresregeln.
Somit ist mein Code sicherer


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 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