AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Differenz zwischen Datum / Uhrzeit

Ein Thema von Uncle Cracker · begonnen am 22. Dez 2006 · letzter Beitrag vom 23. Dez 2006
 
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

Differenz zwischen Datum / Uhrzeit

  Alt 22. Dez 2006, 11:03
Guten Morgen,

ich habe jetzt schon das ganze Forum durchsucht und auch einiges gefunden und zusammengebastelt, aber egal wie ich es mache, es werden immmer Fehler erzeugt und ich weiß einfach nicht warum

Ich versuche schon die ganze Zeit die Differenz zwischen zwei Daten zu ermitteln, aber entweder der Monat stimmt nicht oder das Jahre. Die beiden Daten werden normal mit DecodeDate und DecodeTime verglichen, aber es stimmt einfach nicht :/

Hier mal mein Quelltext:

Delphi-Quellcode:
function InJahren(const Damals, Heute: TDateTime): Integer;
var
   DamalsTag, DamalsMonat, DamalsJahr: Word;
   HeuteTag, HeuteMonat, HeuteJahr: Word;
begin
  if Heute < Damals then
  begin
     Result := -1
  end
  else
  begin
    DecodeDate (Damals, DamalsJahr, DamalsMonat, DamalsTag);
    DecodeDate (Heute, HeuteJahr, HeuteMonat, HeuteTag);
    Result := HeuteJahr - DamalsJahr;
    if (HeuteMonat <= DamalsMonat) and (HeuteTag < DamalsTag) then
    begin
      Dec (Result);
    end;
  end;
end;

function diff(Datum: TDateTime): string;
var
    Differenz, jetzt: TDateTime;
    jahre, monate, tage, h, m, s, ms : Word;
begin
  result := '';
  jetzt := Now;
  Differenz := jetzt - Datum;
  DecodeDate(Differenz, jahre, monate, tage);
  if MonthsBetween(jetzt, Datum) {DaysBetween(jetzt, Datum)} <> 0 then
    monate := monate - 1
  else
    monate := 0;
  jahre := InJahren(Datum, Now);
  DecodeTime (Differenz, h, m, s, ms);
  if Jahre <> 0 then result := InttoStr(Jahre) + ' Jahre ';
  if Monate <> 0 then result := result + InttoStr(Monate) + ' Monate ';
  if tage <> 0 then result := result + InttoStr(tage) + ' Tage ';
  if h <> 0 then result := result + InttoStr(h) + ' Stunden ';
  if m <> 0 then result := result + InttoStr(m) + ' Minuten ';
  if s <> 0 then result := result + InttoStr(s) + ' Sekunden ';
end;
Die Funktion InJahren ist eine Funktion, die ich hier im Forum gefunden habe, um die Jahre zu bestimmen...

Also, es wird Datum / Uhrzeit als Paramter im folgenden Format eingegeben '05.10.2002 01:00:12' und wird dann mit dem aktuellen Datum / Uhrzeit verglichen und als Ergebnis soll die Differenz in Jahren, Monaten, Tagen, Stunden, Minuten und Sekunden ausgegeben werden, jedoch funktioniert es nicht immer, da die Funktion z.B. am selben Tag nur ein wenig früher "30 Tage" ausgibt, jedoch bei einem Monat vorher den korrekten Wert und verstehe einfach nicht wieso

Hat vielleicht jemand einen Vorschlag, der funktioniert oder einen komplett anderen Ansatz?
Toll wäre natürlich auch, wenn ich anstatt der Monate, die Wochen angeben könnte...


Thx UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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