![]() |
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. |
AW: Zeit zwischen 2 daten
Schau dir mal die Unit DateUtils an
|
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:
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.
var
Timestamp : TDateTime; begin Timestamp := Now(); Timestamp := Timestamp + 1; // Einen Tag dazu addieren end; |
AW: Zeit zwischen 2 daten
Schau dir mal die Funktion DaysBetween (F1) an
|
AW: Zeit zwischen 2 daten
Zitat:
Delphi-Quellcode:
, das sollte die Differenz in Tagen ergeben. Zur genaueren Ausgabe kannst Du wie erwähnt die Funktionen aus DateUtils nutzen oder selbst umrechnen.
Label4.Caption:=FloatToStr(Tage);
|
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 |
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 |
AW: Zeit zwischen 2 daten
Weil 1 halt der 01.01.1900 ist
|
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] |
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 19:31 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