Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Sekunden (https://www.delphipraxis.net/64774-datumzeit-datumzeit-%3D-rest-tagen-stund-minuten-sekunden.html)

Karstadt 8. Mär 2006 07:38


DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Sekunden
 
Hallo.

Gibt es eine Funktion in D7 die mir eine DatumZeit Wert aus zwei DatumZeit wert ausrechnet.

z.B.

Angenommen am 01.01.06 8:00
Abgegeben am 05.01.06 10:00

Dauer 4 Tage und 2 Stunden (gibt das als eine Funktion)

Grishnak 8. Mär 2006 07:56

Re: DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Seku
 
TDateTime ist ja eine Fließkommazahl; wenn du die Differenz zweier TDateTime bildest, dann hast du die Differenz in Tagen. Für 4 Tage und 2 Stunden wären das: 4,08333333.

Suche mal in der Delphi-Hilfe nach z.B. der Funktion "DaysBetween()" oder "HoursBetween()" etc.

Union 8. Mär 2006 09:27

Re: DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Seku
 
So könnte es gehen:
Delphi-Quellcode:
uses DateUtils, Math;

{$R *.dfm}
procedure DisplayTimeDiff(ANow, AThen : TDateTime);
var
   TimeValues : array [0..3] of word;
   dtDiff : TDateTime;
begin
   dtDiff := ANow - AThen+1;
   // Jahre
   if dtDiff < 365 then
      TimeValues[0] := 0
   else
      TimeValues[0] := YearOf(dtDiff);
   // Tage
   TimeValues[1] := DayOf(dtDiff);
   // Stunden
   TimeValues[2] := HourOf(dtDiff);
   // Minuten
   TimeValues[3] := MinuteOf(dtDiff);

   ShowMessage(Format('%d Jahre %d Tage %d Stunden %d Minuten', [TimeValues[0], TimeValues[1], TimeValues[2], TimeValues[3]]));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   dtNeu, dtAlt : TDateTime;
begin
   dtNeu := StrToDateTime('05.01.2006 10:00');
   dtAlt := StrToDateTime('01.01.2006 08:00');
   DisplayTimeDiff(dtNeu, dtAlt);
end;

Angel4585 8. Mär 2006 09:32

Re: DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Seku
 
"DayOf" liefert doch nur den tag in dem angegebenen Monat zurück oder? :gruebel:

Union 8. Mär 2006 09:53

Re: DatumZeit - DatumZeit = Rest In Tagen Stund Minuten Seku
 
Zitat:

Zitat von Angel4585
"DayOf" liefert doch nur den tag in dem angegebenen Monat zurück oder? :gruebel:

Du hast Recht. Besser ist es so:
Delphi-Quellcode:
procedure DisplayTimeDiff(ANow, AThen : TDateTime);
var
   TimeValues : array [0..4] of word;
   dtDiff : TDateTime;
begin
   TimeValues[0] := trunc(ANow-AThen);
   dtDiff := Frac(ANow-AThen);
   DecodeTime(dtDiff, TimeValues[1], TimeValues[2], TimeValues[3], TimeValues[4]);
   ShowMessage(Format('%d Tage %d Stunden %d Minuten', [TimeValues[0],TimeValues[1],TimeValues[2]));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz