Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: DateTime-Subtraktionsproblem

  Alt 20. Dez 2004, 16:04
Zitat von Dax:
Ich sitze hier schon seit ein paar Stunden an einem verzwickten Problem..

Ich habe zwei TDateTime-Werte, die ich subtrahieren will. Beim normalen Verfahen (dt1 - dt2) kommen aber leider fehlerhafte Werte. Die beiden Werte sind 20-12-2004 15:51 und 20-12-2004 16:00. Die Datums/Zeitdifferenz, die ich suche, ist offensichtlich 0-0-0 00:09. Allerdings sagt Delphi mir, die Datumsdifferenz sei 1899 Jahre

Wie kann ich nun die beiden Werte subtrahieren, dass 0-0-0 00:09 herauskommt?

PS: Ich brauche sowohl die Datumsdifferenz als auch die Zeitdifferenz..
Es gibt keine "Datumsdifferenz", sondern nur eine Differenz gemessen in Tagen und Bruchteilen von Tagen!!
Beispiel:
Delphi-Quellcode:
var
   dt1, dt2 : TDateTime;
   diff : Double;

   tage : integer;
   stunden : double;
begin
   diff := dt1 -dt2;

   ShowMessageFmt('Zeitdifferenz: %f Tage', [diff]);

   // man kann die Tage auch in Tage und Stunden zerbrechen:
   tage := trunc(diff);
   stunden := (diff - tage)*24.0;
   ShowMessageFmt('Zeitdifferenz: %d Tage & %f Stunden', [tage, stunden]);

   // man kann das Spiel weitertreiben und die Zeitdifferenz noch in Minuten und Sekunden aufbrechen
   // hausaufgabe :-)
end;
Wenn du eine Zeitdifferenz in Monaten und Jahren ausdrücken möchtest, kommst du schon in Schwierigkeiten;
denn wie lange soll der Monat sein (30 oder 31 Tage)?
Zeitdifferenzen zwischen 0.0 und 0.9999999999 kann man mit TimeToStr umwandeln,
bei grösseren (oder nagativen!!!) Differenzen muss man erst die ganzen Tage rausrechnen.
Delphi-Quellcode:
diff := Abs(diff);
tage := trunc(diff);
rest := int(diff);
   ShowMessageFmt('Zeitdifferenz: %d Tage & %s ', [tage, TimeToStr(rest)]);
Andreas
  Mit Zitat antworten Zitat