Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Mit Datum arbeiten


V!P3R - Sa 18.10.08 12:28
Titel: Mit Datum arbeiten
Hallo


Delphi-Quelltext
1:
2:
3:
var c: String;
c:=IntToStr(Round(StrToDate(FormatDateTime('dd.mm',StrToDate(Edit1.Text))) - StrToDate(FormatDateTime('dd.mm',Now)))) ;
// So rechne ich das datum (Beispiel: 09.04.1993) - Das Datum von heute 18.10.2008 und bekomme die anzahl der tage ÜBER EIN JAHR


Jez möchte ich aber
1. Das ALter in Jahren haben
Mein Versuch:

Delphi-Quelltext
1:
2:
3:
var c: String;
c:=IntToStr(Round(StrToDate(FormatDateTime('yyyy',Now)) - StrToDate(FormatDateTime('yyyy',StrToDate(Edit1.Text))))) ;
// Aber geht nicht, weil : '2008' ist kein gültiges Datum

Wie kann ich das rechnen. Wichtig: ich habe nur zwei Daten in folgender Form:18.10.2008 und 09.04.1993

MfG


V!P3R - Sa 18.10.08 12:39

Okay ich glaube ich habe die Lösung gefunden:


Delphi-Quelltext
1:
2:
var a:String;
a:= IntToStr(StrToInt(FormatDateTime('yyyy',Now))-(StrToInt(FormatDateTime('yyyy',StrToDate(Edit1.Text)))));


Yogu - Sa 18.10.08 13:07

Warum klammerst du dich so verzweifelt an Daten, wenn du doch nur zwei Jahre (= Ganzzahlen :idea:) vergleichen willst?


Delphi-Quelltext
1:
Age := YearOf(Now) - StrToInt(Edit1.Text);                    

Edit: Year zu YearOf korrigiert


V!P3R - Sa 18.10.08 13:24

weil in Edit1 doch '09.04.1993' steht und nich '1993'

außerdem funktioniert es doch so einwandfrei.

MfG


jaenicke - Sa 18.10.08 13:49

Die Lösung ist aber durch das FormatDateTime relativ langsam, viel einfacher und schneller dürfte das sein:

Delphi-Quelltext
1:
2:
  lblOutput.Caption := 'Unterschied: '
    + IntToStr(YearOf(Now) - YearOf(StrToDate(edtDate.Text))) + ' Jahre';
Wobei schneller sein dürfte das Jahr selbst aus dem String zu holen, aber dann ist es nicht ganz mehr so kurz.