Ist es möglich 2 Daten zu Subtrahieren?

Hallo,

Als Prozess des Lernens der Sprache C, habe ich mir vorgenommen ein Programm zu schreiben, welches das aktuelle Datum bezieht (was soweit kein Problem darstellt), und ein Geburtsdatum abfragt.
Die eingabe solle folgendes Format haben, „Tag.Monat.Jahr“
quasi alles hintereinander mit punkten getrennt.
Das Programm soll nun das Alter ausgeben.

allerdings stoße ich da schon auf ein Problem.
Ich habe absolut keine Idee wie ich das bewerkstelligen soll das man 2 Daten subtrahieren(?) kann. und selbst wenn ich wüsste wie ich dem Programm sagen könnte wie es die Daten aufnehmen soll, wie soll es daraus auf das alter schließen?

Ich weis, was man jetzt denken könnte,

„warum sowas schwieriges, versuch doch etwas was du kannst!“

aber wie gesagt will ich ja etwas lernen.

Jeder Denkanstoß ist hilfreich, ich erwarte und möchte gar keine fertigen scripts, einfach nur Anstöße und Möglichkeiten wie es klappen könnte. den Rest google ich mir zusammen.

mfg
tim

Jahr mal 365 plus monat mal 12 plus tage=zahl
zahl minus zahl
dann rückrechnen
FF

ich finds gut, dass etwas versuchst was du noch nicht kannst
das ist nämlich genau der richtige weg besser zu werden^^

was ich machen würde ist, das geburtsdatum in einem char-array abzufragen und die dann anschließend in einer schleife abzulaufen

sollte dann so aussehen, dass sie alle in einzelnen ints gespeichert werden

dann vergleichst du sie einfach mit dem aktuellen
etwa so dass du anfängst erst mal jahr vergleichen

Da du etwas lernen möchtest, gebe ich dir einen kleinen hinweis:
überführe die Datumswerte in einen INT wert z.b. sekunden seit 1970, oder in einen FLOAT wert, bei dem die Sekunden des Tages hinter dem komma stehen ( excel ) dann ziehst du die beiden INT oder FLAOT werte von anander ab. fertig.

sorry ich habe es ausversehen abgeschickt
also erst jahr-gbjahr
dann noch prüfen ob gbmonat und gbtag größer ist als datum
wenn ja ziehst du 1 vom alter ab

wenn du noch tag und monat angezeigt haben willst sag mir bescheid

Hallo Tim,

gehe ich recht in der Annahme, dass du C# meinst?
Falls ja, müsste dir ja die Struktut „DateTime“ schon aufgefallen sein (wenn du sagst, dass du weißt, wie du dir das aktuelle Tagesdatum besorgen kannst): DateTime.Now.

Da gibt es nun verschiedene Wege. Je nachdem, wie genau du arbeiten möchtest. Reicht es dir z.B. grob das Jahr zu benutzen, kannst du folgendes tun:

DateTime.Now.Year - Geburtsdatum.year

Problem dabei ist, dass hierbei nicht berücksichtigt wird, ob der Geburtstag der Person im aktuellen Jahr schon war oder nicht. Hatte er / sie dieses Jahr noch keinen Geburtstag, stimmt das Ergebnis. Hatte er / sie schon Geburtstag, ist das Ergebnis um 1 zu niedrig.

Du könntest auch die Methode Subtract verwenden:

DateTime.Now.Subtract(Geburtsdatum) // Geburtsdatum muss auch ein DateTime sein

Die Methode Subtract gibt dir ein TimeSpan Objekt zurück. Dieses enthält die genaue Differenz zwischen diesen beiden Daten. Da die TimeSpan Struktur maximal die Anzahl der Tage (nicht der Monate oder Jahre) zurück liefert, müsstest du die Jahre dann noch selbst ausrechnen:

int jahre = timeSpan.Days / 360;

Damit bekommst du auch die Differenz in Jahren (also das Alter). Ich bin mir jetzt nicht ganz sicher, ob du das Ergebnis der Division nicht noch explizit in einen „int“ casten musst (da ja bei der Division auch eine Fließkommazahl entstehen kann):

int jahre = (int)(timeSpan.Days / 360);

Das müsstest du dann mal ausprobieren.

Hoffe, ich konnte dir helfen.

Gruß,
Alex

gut als ich noch einmal so drüber nach gedacht habe, ist mir genau dieser weg in den kopf gekommen.

danke

ich verstehe was du meinst, aber wie oben beschrieben meine ich C und nicht C#.
aber trotzdem danke für deine hilfe.

tim

Bezüglich C kann ich dir leider nicht weiterhelfen.
Spontan würde mir da nur einfallen, dass du die einzelnen Teile des Datums (Tag, Monat und Jahr) separierst und getrennt mit denen rechnest.

Gruß,
Alex