![]() |
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Ich werde, wie empfohlen, in Minuten umrechnen.
Ich verwende bei der Eingabe des von- und bis-Zeitpunktes je zwei DateTimePicker für Datum und Uhrzeit. Als Testdaten habe ich für von und bis den selben Zeitpunkt 1.1.2008 00:00 gewählt. Je nach Variante wie ich die Differenz errechne, wird mir ein anderes Ergebnis angezeigt:
Delphi-Quellcode:
Kann mir das jemand erklären. Ich wende doch nur das Kommutativgesetz an. Wo ist mein Denkfehler?
Variante 1:
IntToStr(Round( (Trunc(vonD.Date) + Frac(vonZ.Time)) *1400) <- sollte natürlich 1440 heißen - Round( (Trunc(bisD.Date) + Frac(bisZ.Time)) *1440)) -> Ergebnis -1577920 Variante 2: IntToStr(Round( Trunc(vonD.Date) *1440 + Frac(vonZ.Time) *1400) <- hier auch - Round( Trunc(bisD.Date) *1440 + Frac(bisZ.Time) *1440)) -> Ergbenis 0 gruß Peter |
Re: Rechnen mit Zeiten zur Berechnung von Spesen
M...! Tippfehler! Natürlich muss ich überall mit dem Faktor 1440 und nicht 1400 rechnen. Das war der Fehler!
Außerdem wende ich nicht zu 100% das Kommutativgesetz an, da ich dazwischen noch eine Rundung durchführe. |
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Ein Vorschlag:
Delphi-Quellcode:
function DateTimeToMinutes(const aDT : TDateTime) : Integer;
begin Result := Round(aDT * 1440 * 60); Result := Result div 60; end; function MinutesToDateTime(const aMinutes : Integer) : TDateTime; begin Result := aMinutes / 1440; end; // Zeitdifferenz in Minuten ginge dann so: Diff := DateTimeToMinutes((bisD.Date + bisZ.Time) - (vonD.Date + vonZ.Time)); |
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Gute Idee, das Umrechnen in Sekunden beugt sicherlich Rundungsfehler vor.
Zitat:
|
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Ich dachte, der DatePicker liefert bei .Date wirklich nur den Datumsanteil, und bei .Time nur die Nachkommastellen?
|
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Nein, leider nicht. Immer beides, allerdings kann man nur den Teil verändern, den man mit der Kind-Eigenschaft eingestellt hat.
|
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Na das ist ja ein doofes Teil. Jetzt verstehe ich auch, warum Du eine andere Komponente suchst. :) Vielleicht ist ja in der JVCL was dabei? Ich bin leider noch nicht dazu gekommen, mich näher damit zu beschäftigen.
|
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Man kann das aber umgehen, wenn man Trunc()/Frac() verwendet.
|
Re: Rechnen mit Zeiten zur Berechnung von Spesen
Na, genau das mache ich auch. Ich hatte aber gehofft, es vermeiden zu können.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 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