Delphi-PRAXiS
Seite 1 von 3  1 23      

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/)
-   -   Zeit zwischen 2 daten (https://www.delphipraxis.net/152024-zeit-zwischen-2-daten.html)

wallwriht 8. Jun 2010 20:55

Zeit zwischen 2 daten
 
Hi Leute,


Ich habe 2 Daten und möchte die zeit zwischen ihnen auslesen.
Habs bislang so probiert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Tage,t1,t2 : Tdatetime;
zeit :Ttime;
s1,s2:string;


begin
Label1.Caption:=Timetostr(Now);
Label2.Caption:=Datetimetostr(Now);

s1:=datetimetostr(now);
s2:='03.06.2010 18:34:30';
Label3.Caption:=s1 + '  ' + s2;;
t1:=strtodatetime(s1);
t2:=strtodatetime(s2);
Tage:=t1 - t2;
Label4.Caption:=datetimetostr(Tage);

end;


Dies funktioniert aber nicht, es ergiebt immer das gleiche: 4.1.1900 .....
wo liegt der fehler?


lg
Wallwriht



als hinweis noch: Die label 1-3 sind zur hilfe um die einzelnen Daten zu zeigen.

mkinzler 8. Jun 2010 20:58

AW: Zeit zwischen 2 daten
 
Schau dir mal die Unit DateUtils an

s.h.a.r.k 8. Jun 2010 21:00

AW: Zeit zwischen 2 daten
 
TDateTime ist intern nur ein Extended, d.h. dort steht zurzeit ein Wert von über 30000 drin. Das Startdatum, d.h 0, ist der 1.1.1900 (soweit ich das noch weiß). Ein Tag zählt dabei als 1. Siehe:
Delphi-Quellcode:
var
  Timestamp : TDateTime;
begin
  Timestamp := Now();
  Timestamp := Timestamp + 1; // Einen Tag dazu addieren
end;
Das Problem bei dir ist, dass du dir das konkrete Datum ausgeben lässt. Es sind zwar drei Tage vergangen, aber du musst das immer relativ zum Startdatum sehen. So wie du es machst ist es relativ vom 1.1.1900 aus, plus die Difference.

Wolfgang Mix 8. Jun 2010 21:05

AW: Zeit zwischen 2 daten
 
Schau dir mal die Funktion DaysBetween (F1) an

DeddyH 8. Jun 2010 21:07

AW: Zeit zwischen 2 daten
 
Zitat:

Delphi-Quellcode:
Label4.Caption:=datetimetostr(Tage);

Versuch es stattdessen mal mit
Delphi-Quellcode:
Label4.Caption:=FloatToStr(Tage);
, das sollte die Differenz in Tagen ergeben. Zur genaueren Ausgabe kannst Du wie erwähnt die Funktionen aus DateUtils nutzen oder selbst umrechnen.

wallwriht 8. Jun 2010 21:08

AW: Zeit zwischen 2 daten
 
habe mir gerade days between angeschaut werde aber nnicht schlau draus. soll ich der funktion einfach anow und athen übergeben und das result ust dann mein komplettes ergebnis?


Das Problem ist auch das ich das ergebnis auf die minute oder sogar sekunde brauche

Wolfgang Mix 8. Jun 2010 21:09

AW: Zeit zwischen 2 daten
 
@ s.h.a.r.k:
Tag 0 ist der 30.12.1899, warum auch immer :wall:

@wallwriht:
Ja! Die Vorkommazahl ist die Anzahl der Tage,
die Nachkommastellen kannst du mit Trunc abschneiden

mkinzler 8. Jun 2010 21:10

AW: Zeit zwischen 2 daten
 
Weil 1 halt der 01.01.1900 ist

DeddyH 8. Jun 2010 21:11

AW: Zeit zwischen 2 daten
 
@wallwriht: Du übergibst der Funktion 2 Daten und erhältst die Differenz in Tagen.

[edit] Allerdings nur in ganzen Tagen, da eine ganze Zahl zurückgegeben wird [/edit]

s.h.a.r.k 8. Jun 2010 21:12

AW: Zeit zwischen 2 daten
 
Und weil 2 dann wohl der 02.01.1900 ist :mrgreen:

@Wolfgang Mix: Asche auf mein Haupt :-|


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.
Seite 1 von 3  1 23      

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