![]() |
Re: Alter errechnung
Zitat:
|
Re: Alter errechnung
Also wenn man nur das Alter in Jahren haben möchte, dann kann man die Schaltjahre vernachlässigen. Denn so lange lebt kein Mensch, als dass es aufgrund der Schaltjahre zu einem Rechnungsfehler von z.B. einem Jahr kommt :D Man muss bei der Division durch 365 einfach nur die Nachkommastellen vernachlässigen bzw. immer auf eine glatte Zahl auf oder abrunden.
|
Re: Alter errechnung
Du hast mich nicht verstanden. Wenn man z.B. am 20.03. Geburtstag hat, kommt bei Nichtberücksichtigung von Schaltjahren am 19.03. evtl. das falsche Ergebnis heraus, wenn man einfach die Anzahl der Tage durch 365 teilt.
|
Re: Alter errechnung
Ich dachte, nach so vielen Beiträgen wäre die vollständige Lösung schon dabei. Nun ja...
Vorausgesetzt, dass wirklich nach einer NET-Lösung gefragt wird, kann man direkt mit Monat und Tag vergleichen:
Code:
(und das in Delphi zu schreiben statt in C#, überlasse ich Euch).
DateTime geburtstag = ...
DateTime vergleich = DateTime.Today(); int alter = vergleich.Year - geburtstag.Year; // korrigieren, wenn im aktuellen Jahr noch kein Geburtstag war if ( (geburtstag.Month > vergleich.Month) || (geburtstag.Month == vergleich.Month && geburtstag.Day > vergleich.Day) ) alter--; Das Ganze kann man natürlich auch mit mehrfachem Vergleich von IsLeapYear für Geburtstag und Heute machen; aber ich glaube, dieser Weg ist kürzer und einfacher. Gruß Jürgen PS. Sorry, ich stelle gerade fest, dass DeddyH in #4 und mkinzler in #7 dasselbe Verfahren meinten. Mein Beitrag dient also nur dazu, eine NET-Lösung zu schreiben und nicht nur zu skizzieren. |
Re: Alter errechnung
So geht's richtig (so wie es mkinzler schon angedeutet hat und natürlich auch DeddyH):
akt. Datum und Geburtstag nach Jahr,Monat und Tag zerlegen. (DecodeDate()-Funktion) Alter = AktJahr-GebJahr; Jetzt muss man noch prüfen, ob man dieses Jahr schon Geburtstag hatte. Falls nicht, muss ein Jahr vom Alter abgezogen werden.
Delphi-Quellcode:
if (GebMonat*100+GebTag) > (AktMonat*100 + AktTag) then
Dec(Alter); // anstelle der Zahl 100 hätte man jede Zahl >= 31 nehmen können // Hardcode Programmierer würden hier 32 nehmen und als "shl 5" einbauen |
Re: Alter errechnung
Sry leute ich muss mich verbessern ich habe win32 ichw erde mich gleich mal rann machen und schauen ob ich was hinbekomme
|
Re: Alter errechnung
gut ich habe es hin bekommen ich wollte mich herzlich bedanken.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz