Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Tage in Jahre (https://www.delphipraxis.net/3910-tage-jahre.html)

The Re@l 5. Apr 2003 16:24


Tage in Jahre
 
Holla

Ich hab folgendes Porblem:

Code:
var
d: Tdatetime;
i: integer;
begin
d := Query1.FieldByName('date').AsDateTime;
i := Round(now - d);
edit2.Text := intToStr(i)
so der gibt mir nun die differenz in Tagen zurück, aber ich finde keine Lösung es in Jahre auszugeben, geht das überhaupt? Von wegen Schaltjahr etc.

Cya
The Re@l

Haegar 5. Apr 2003 16:35

rechne es doch einfach um 1 jahr hat 365 tage (abgesehen vom schaltjahr). brauchst doch also nur das ergebniss durch 365 teilen!

edit: das mit dem schaltjahr hatte ich überlesen

gruss haegar

The Re@l 5. Apr 2003 16:43

das dumme ist das ich es als erinnerungsFunktion einbauen wollte der mir direkt sagt wie alt die Person ist, aber wenn ich durch 365 teile kommt die rechnung nich aus.

Haegar 5. Apr 2003 16:53

ich hab noch ne idee, wird aber vielleicht umständlicher als nötig.
alle 4 jahre (1460 Tage) haste ein tag mehr pro jahr.
kannste da nicht rekursiv rechnen und immer prüfen ob irgendwas (hab noch nicht ganz gefunden was) durch 1460 gleich 0 als rest liefert...dann haste schaltjahr, und deine tage im jahr sind nun 366 und wenn der rest<>0 ist, dann 365 tage!

einigermaßen verstanden? :roll:
gruss haegar

The Re@l 5. Apr 2003 16:54

jop verstanden klingt auch logisch ich setz mich mal ran :coder:

Dank dir erstmal

Haegar 5. Apr 2003 16:56

kannste mir die lösung dann mal zeigen? würd mal gern sehen was ich da verbrochen hab ;))

gruss haegar

The Re@l 5. Apr 2003 17:11

Ich hab mir gerade noch was anderes überlegt, das, glaub ich, einfacher ist.
Und zwar lasse ich die Datums vergleichen, wenn Tag und Monat identisch ist, soll er mir ne Meldung machen und vom Jahr die Differenz ausgeben.

The Re@l 5. Apr 2003 18:57

So funktionierts

Code:
var
 datum1, datum2: TDatetime;
 i: Integer;
begin
  IF DBEdit10.Text <>'' then begin
  datum1:= Query1.FieldByName('date').AsDateTime;
  datum2:=now;

  i := round(datum2-datum1);
  i := (i * 4);
  edit2.text := (intToStr(i Div 1461)) + ' jahre';
  end else begin
  edit2.Text := '';
  end;
end;
das war doch so wie du meintest @ haegar, oder?

woki 5. Apr 2003 19:31

Hallo,

mal daran gedacht die Funktion

YearOf()

function YearOf(const AValue: TDateTime): Word;

Die Funktion gibt das Jahr zurück, das von einem TDateTime-Wert repräsentiert wird.

Zusammen mit:
function DayOfTheYear(const AValue: TDateTime): Word;

Die Funktion gibt die Anzahl der Tage zwischen dem angegebenen TDateTime-Wert und dem 31. Dezember des vorhergehenden Jahres an.

Sollte dies doch auch das Problem lösen?

Gruß
Wolfgang

Haegar 5. Apr 2003 19:38

also wie gesagt so ne richtig fertige vorstellung hatte ich davon noch nicht, aber ob das mit dem rekursiv überhaupt nötig/praktisch gewesen wäre bezweifel ich selbst ;)

gruss haegar


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 2  1 2      

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