Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TDatetime Werte größer als 24 h (https://www.delphipraxis.net/88425-tdatetime-werte-groesser-als-24-h.html)

sebastian_buege 15. Mär 2007 08:14


TDatetime Werte größer als 24 h
 
Guten Morgen, ich habe folgendes Problem:
Ich möchte differenzen zwischen zwei Zeiten ermitteln. Dazu nutze ich den Datentyp Datetime. alles funktiniert ganz gut solange die Differenz nicht größer als 24 h sind.
ich muss dazu sagen das ich eine Zeiterfassung programmiere und die Differenz zwischen anfangss und endzeit von einem monat zusammen rechne . deshlab können auch differenzen herauskommen, die größer als 24h sind was kann ich machen ?

turboPASCAL 15. Mär 2007 08:21

Re: TDatetime Werte größer als 24 h
 
Du solltest nicht mit Datetime rechnen. Konvertiere deine Zeiten in Minuten und rechne mit denen,
danach kannst du diese wieder in ein Datums/Zeit-Wert umrechnen.

mkinzler 15. Mär 2007 08:21

Re: TDatetime Werte größer als 24 h
 
DateTime kapselt Daten (Mz von Datum) und Uhrzeiten. Da ein Tag nur 24 Stunden hat, können auch nicht mehr abgebildet werden. Du müsstest die Zeiten z.B. in Minuten speichern.

Klaus01 15. Mär 2007 08:23

Re: TDatetime Werte größer als 24 h
 
In den DateUtils gibt es eine Funktion Namens: HoursBetween und auch MinutesBetween
diese geben einen Int64 Wert zurück.
Vielleicht ist es das was Du suchst?

Grüße
Klaus

sebastian_buege 15. Mär 2007 08:23

Re: TDatetime Werte größer als 24 h
 
Besten Dank

himitsu 15. Mär 2007 08:32

Re: TDatetime Werte größer als 24 h
 
Wieso soll TDateTime nicht mit Werten über 24h zurechtkommen?

Wie bereits erwähnt wurde ist schließlich das Datum auch mit enthalten, womit auch mehr als 24h möglich sind.

Außerdem ist TDateTime doch von Haus aus ein differentieller Datentyp ... er reprenseniert ja auch nur die Differenz zu 30.12.1899 0°°.

Es kommt also nur darauf an wie man die Werte darin interpretiert und was man als Bezugspunkt wählt.


Delphi-Quellcode:
Diff := Abs(DateTime1 - DateTime2);

S := IntToStr(Trunc(Diff)) + ' Day(s) ' + TimeToStr(Diff);


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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