Thema: Delphi DateUtils Problem

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: DateUtils Problem

  Alt 7. Jun 2006, 06:22
Hallo Philipp,

in Beitrag #3 hat Hawkeye dir zwei Dinge gezeigt:

(1) Die Zeitspanne zwischen zwei Zeitpunkten kann in Delphi einfach durch Differenzbildung bestimmt werden:

(2) Auch wenn das Ergebnis eine Zeitspanne darstellt und keinen Zeitpunkt, kann für die Darstellung problemlos das übliche Zeitformat verwendet werden.

Delphi-Quellcode:
var
  sDiff: String;
  dtDiff, dtEvent: TDateTime;
begin
  dtDiff := dtEvent - Now;
  sDiff := TimeToStr(dtDiff);
end;
Dabei verwendet die Funktion TimeToStr() nur den Zeitanteil von dtDiff, welcher Frac(dtDiff) ist. Der Datumsanteil Trunc(dtDiff) kann nicht so einfach mit DateToStr() sichtbar gemacht werden, da hier eine andere Semantik vorliegt. Dieser Wert repräsentiert die Anzahl von ganzen Tagen zwischen zwei Zeitpunkten. Du kannst ihn z.B. als Kombination von Tagen und Wochen darstellen:

Delphi-Quellcode:
function DaysToWeeks(n: Integer): String;
var
  nDays, nWeeks: Word;
  bPast: Boolean;
  sWeeks, sDays: String;
begin
  bPast := n < 0;
  n := Abs(n);
  DivMod(n, 7, nWeeks, nDays);
  if n = 0 then Result := 'else
  begin
    sWeeks := IfThen(nWeeks = 0, '',
      IfThen(nWeeks = 1, '1 Woche ', Format('%d Wochen ', [nWeeks])));
    sDays := IfThen(nDays = 0, '',
      IfThen(nDays = 1, '1 Tag ', Format('%d Tage ', [nDays])));
    Result := IfThen(bPast, 'vor ', 'noch ') + sWeeks + sDays;
  end;
end;
Getippt und nicht getestet.

Grüße vom marabu

Edit: Jetzt schon ein wenig getestet...
  Mit Zitat antworten Zitat