Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTime vergleichen? (https://www.delphipraxis.net/111354-tdatetime-vergleichen.html)

finalr 2. Apr 2008 08:35


TDateTime vergleichen?
 
Hi,

ich möchte gerne 2 TDateTime Werte(Format: 2008-1-30 12:01:47) vergleichen.
z.B. in der Art:
Delphi-Quellcode:
var Datum1, Datum2: TDateTime;
begin
 if Datum1 > Datum2 THEN
 BEGIN
   // blub blub
 END;
end;
Aber das funktioniert nicht wirklich. Jemand einen Vorschlag?

Gruss Daniel

mkinzler 2. Apr 2008 08:39

Re: TDateTime vergleichen?
 
Zitat:

TDateTime Werte(Format: 2008-1-30 12:01:47)
Nein TDateTime sind Double

Was geht nicht?

finalr 2. Apr 2008 08:50

Re: TDateTime vergleichen?
 
Naja, es funktioniert allgemein nicht, wenn ich mir z.B. mit
Delphi-Quellcode:
if Datum1 <> Datum2 then ShowMessage('lol');
nur alle unterschiedlichen Datumswerte anzeigen lassen möchte.

Da gibt er mir jedes Datum aus auch wenn sie gleich sind!

Bernhard Geyer 2. Apr 2008 08:52

Re: TDateTime vergleichen?
 
Zitat:

Zitat von finalr
Da gibt er mir jedes Datum aus auch wenn sie gleich sind!

Gleichheitsvergleich bei Doublewerten ist schwer. Entweder du wandelst sie in Strings um Format('yyyy-mm-dd hh:nn', Datum1) um maximal auf Minuten zu vergleichen oder du definierst eine Schwelle (Abs(Datum1-Datum2) > (1/24*60*60) ... wenn unterschied maximal 1 Sekunde betragen darf).

DelphiKlaus 2. Apr 2008 08:55

Re: TDateTime vergleichen?
 
Hallo,

und was funktioniert an dem Vergleich nicht? Probleme gibt's nur beim Vergleich auf Gleichheit, weil, wie mkinzler schon schrieb, TDateTime-Werte letztendlich Double-Werte sind. Da kannst Du z.B. mit einem Epsilon arbeiten:

Delphi-Quellcode:
  if (Datum1 > Datum2 - 1.0 / SecsPerday) and (Datum1 < Datum2 + 1.0 / SecsPerday) then
    ShowMesssage ('Die Werte sind wohl gleich')
MfG

Klaus

RavenIV 2. Apr 2008 08:59

Re: TDateTime vergleichen?
 
TDateTime wird intern als Double verwaltet.
Hierbei ist der Teil vor dem Komma der Datumsanteil, der Rest ist der Zeitanteil.

Somit kannst Du TDateTime-Variablen voneinander abziehen oder addieren.

Für mehr Information schau doch bitte die Delphi-Hilfe an.

finalr 2. Apr 2008 09:12

Re: TDateTime vergleichen?
 
ok, danke für die netten Hilfe... :)

squetk 2. Apr 2008 23:31

Re: TDateTime vergleichen?
 
DateUtils.pas :
Delphi-Quellcode:
function CompareDateTime(const A, B: TDateTime): TValueRelationship;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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 by Thomas Breitkreuz