AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SecondsBetween fehlerhaft?

Ein Thema von dominikkv · begonnen am 20. Mai 2010 · letzter Beitrag vom 21. Aug 2014
 
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

SecondsBetween fehlerhaft?

  Alt 20. Mai 2010, 13:03
Hi,

ich habe ein kleines Problem mit der Funktion SecondsBetween aus den DateUtils. Diese gibt in manchen Fällen ein fehlerhaftes Ergebnis aus. Beispiel:
Delphi-Quellcode:
program Test;

{$APPTYPE CONSOLE}

uses
  SysUtils, DateUtils;

var
  Date1, Date2: TDateTime;
  Dummy: Char;

begin
  Date1 := StrToDateTime('20.05.2010 13:57:40');
  Date2 := StrToDateTime('20.05.2010 14:02:40');

  WriteLN(DateTimeToStr(Date1), ' - ', DateTimeToStr(Date2), ' = ', SecondSpan(Date1, Date2), ' = ', SecondsBetween(Date1, Date2));

  Date1 := StrToDateTime('20.05.2010 14:57:40');
  Date2 := StrToDateTime('20.05.2010 15:02:40');

  WriteLN(DateTimeToStr(Date1), ' - ', DateTimeToStr(Date2), ' = ', SecondSpan(Date1, Date2), ' = ', SecondsBetween(Date1, Date2));

  Read(Dummy);
end.
Ergebnis:
Zitat:
20.05.2010 13:57:40 - 20.05.2010 14:02:40 = 2.99999999720603E+0002 = 299
20.05.2010 14:57:40 - 20.05.2010 15:02:40 = 3.00000000349246E+0002 = 300
Beides mal ist der Unterschied genau 5 Minuten (= 300 Sekunden), der erste Aufruf zeigt aber eine Differenz von 299 Sekunden!

Das wird wohl daran liegen, dass TDateTime ein Double ist und darum Ungenauigkeiten in den Nachkommabereichen auftreten. Allerdings erwarte ich von einer offiziellen Funktion dass diese auch funktioniert (Wortspiel! ).

Ich behelfe mir im Moment so:
Delphi-Quellcode:
function MySecondsBetween(const ANow, AThen: TDateTime): Int64;
begin
  Result := Round(SecondSpan(ANow, AThen));
end;
ich weiß aber nicht, ob sich diese Funktion immer richtig verhält.

Was haltet ihr davon?

Dominik
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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