Datum berechnen in Delphi ?

Diskutiere Datum berechnen in Delphi ? im Developer Network Forum im Bereich Hardware & Software Forum; Hey na, weiß jemand von euch schlauen Köpfchens wie ich in Delphi rausbekommt wie lange (in Jahren) der z.B 01.02.1936 her ist ? Es soll ein...
  • Datum berechnen in Delphi ? Beitrag #1
F

FireStarZ

Bekanntes Mitglied
Dabei seit
07.01.2002
Beiträge
77
Reaktionspunkte
0
Ort
Vom moGGaz Stern
Hey na,

weiß jemand von euch schlauen Köpfchens wie ich in Delphi rausbekommt wie lange (in Jahren) der z.B 01.02.1936 her ist ?

Es soll ein Geburtstagserinnerer werden aber ich hab kein Plan wie ich anhand des Geburtsdatums herrausfinde wie alt die Person nun eigentlich ist.


thX 4 Help
 
  • Datum berechnen in Delphi ? Beitrag #2
Z

Zombie79

Bekanntes Mitglied
Dabei seit
05.10.2001
Beiträge
6.132
Reaktionspunkte
2
1. Speichere das Datum einer TDateTime-Variablen (nennen wir sie dtGeb)
2. Jetzt einfach Trunc(Now) - dtGeb rechnen und du erhällst die Differenz in Tagen

Jetzt musst du nur noch herausfinden, wieviele Schaltjahre dazwischen liegen und du bekommst einen genauen Wert.
 
  • Datum berechnen in Delphi ? Beitrag #3
D

Dennis[B]

Bekanntes Mitglied
Dabei seit
05.01.2001
Beiträge
1.422
Reaktionspunkte
0
Ort
nix
Hi

Versuchs mal so:

mfg
DennisB

Uses DateUtils;

function alter(meindatum:Tdate):integer;
{by www.boegesoft.de}
var
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;
AYear2, AMonth2, ADay2, AHour2, AMinute2, ASecond2, AMilliSecond2: Word;
begin
DecodeDateTime(meindatum, AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);
DecodeDateTime(date, AYear2, AMonth2, ADay2, AHour2, AMinute2, ASecond2, AMilliSecond2);
result := Ayear2 - AYear;
if (AMonth2 >AMonth ) and (ADay2 > ADay) then result := result - 1; //Hatte noch nicht geburtstag
end;

{
Aufrufen der Funktion z.B. so:
showmessage(inttostr(alter(strtodate('6.2.1981'))));

Wichtig: Den Eintrag unter USES nicht vergessen...
}
 
Zuletzt bearbeitet:
  • Datum berechnen in Delphi ? Beitrag #4
Z

Zombie79

Bekanntes Mitglied
Dabei seit
05.10.2001
Beiträge
6.132
Reaktionspunkte
2
@Dennis: Dies ist eine sehr kunstvolle Lösung. Sie funktioniert tatsächlich, aber wie Lewis Carrol sagt: "Ich hätte dies sehr viel komplizierter machen koennen, sagte die rote Königin ungeheuer stolz."

Code:
var
  iDays:  Integer;
begin
  iDays := Trunc(Now) - Trunc(DateTimePicker.Date);

  ShowMessage(Format('Differenz: %d Tage, %d Jahre', [iDays, iDays div 365]));
end;
 
  • Datum berechnen in Delphi ? Beitrag #5
D

Dennis[B]

Bekanntes Mitglied
Dabei seit
05.01.2001
Beiträge
1.422
Reaktionspunkte
0
Ort
nix
Hi

@Zombie79: Stimmt, aber was ist denn nun mit Schaltjahren?? Die haben ja nicht 365 sondern 366 Tage... Und wenn es z.B. Um das Alter einer Person geht, versagt Deine Funktion auch, wenn die Person im aktuellen Jahr noch nicht geburtstag hatte...

edit: Nimmt man z.B. das "religiöse" Datum 1.1.0001 dann kommt deine Funktion auf 2002 Jahre.... Obwohl einer Person dann erst 2000 Jahre alt wäre...

Und vom 3.9.0001 bis zum 4.9.0001 zählt Deine Funktion ein ganze Jahr...

edit2: Es muß in meinem Quelltext anstatt es year ein month stehen (in der IF abfrage), habe ich aber mittels EDIT schon korrigiert...

mfg
Dennis
 
  • Datum berechnen in Delphi ? Beitrag #6
Z

Zombie79

Bekanntes Mitglied
Dabei seit
05.10.2001
Beiträge
6.132
Reaktionspunkte
2
@Dennis:
Original geschrieben von FireStarZ
[...] weiß jemand von euch schlauen Köpfchens wie ich in Delphi rausbekommt wie lange (in Jahren) der z.B 01.02.1936 her ist ?

Es soll ein Geburtstagserinnerer werden aber ich hab kein Plan wie ich anhand des Geburtsdatums herrausfinde wie alt die Person nun eigentlich ist. [...]
Diesen Zweck erfüllt es.

Ich kenne keine Person (weder tot, noch lebendig), die am 01.01.0001 gebohren ist. Daher macht eine Berücksichtigung dieses Datums nicht wirklich Sinn.

Um die Schaltjahre besser zu berücksichtigen, kann man statt durch 365 auch durch 365,25 teilen. Die Schaltjahre werden von dem TDate-Datentyp berücksichtigt und fließen somit korrekt in die Berechnung ein.
 
  • Datum berechnen in Delphi ? Beitrag #7
F

FireStarZ

Bekanntes Mitglied
Dabei seit
07.01.2002
Beiträge
77
Reaktionspunkte
0
Ort
Vom moGGaz Stern
Ich dank euch trotzdem ;)

-> Nicht immer streiten:p



thX Tschau Tschau
 
  • Datum berechnen in Delphi ? Beitrag #8
D

Dennis[B]

Bekanntes Mitglied
Dabei seit
05.01.2001
Beiträge
1.422
Reaktionspunkte
0
Ort
nix
Hi

@FireStarZ Genau. Eigentlich wollte ich nicht streiten, aber ich habe gerade gesehen, daß mein Text auch leicht "streitenst" geschrieben ist.

@Zombie79 Ich würde sagen, jeder kann den Text nehmen, den er will..

mfg
DennisB
 
  • Datum berechnen in Delphi ? Beitrag #9
Z

Zombie79

Bekanntes Mitglied
Dabei seit
05.10.2001
Beiträge
6.132
Reaktionspunkte
2
@Dennis: Stimmt.

Ich wollte keineswegs streiten. Sorry, wenn das so rübergekommen ist.
 
Thema:

Datum berechnen in Delphi ?

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.181
Beiträge
1.579.175
Mitglieder
55.880
Neuestes Mitglied
Hahn
Oben