AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rechnen mit Zeiten zur Berechnung von Spesen
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnen mit Zeiten zur Berechnung von Spesen

Ein Thema von PASST · begonnen am 12. Mär 2008 · letzter Beitrag vom 14. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 10:15
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:
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
Kann mir das jemand erklären. Ich wende doch nur das Kommutativgesetz an. Wo ist mein Denkfehler?

gruß
Peter
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 10:24
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.
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 10:41
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));
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 11:36
Gute Idee, das Umrechnen in Sekunden beugt sicherlich Rundungsfehler vor.

Zitat:
// Zeitdifferenz in Minuten ginge dann so:
Diff := DateTimeToMinutes((bisD.Date + bisZ.Time) - (vonD.Date + vonZ.Time));
Hier musst du allerdings beachten, dass die DatePicker bisD und bisZ so eingestellt sind, dass bei bisD der Zeitwert auf 00:00h gesetzt ist und für bisZ der Datumswert auf 30.12.1899 oder halt mit Frac und Trunc arbeiten. Analog für vonD und vonZ.
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 11:48
Ich dachte, der DatePicker liefert bei .Date wirklich nur den Datumsanteil, und bei .Time nur die Nachkommastellen?
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 11:56
Nein, leider nicht. Immer beides, allerdings kann man nur den Teil verändern, den man mit der Kind-Eigenschaft eingestellt hat.
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 12:05
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.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 12:16
Man kann das aber umgehen, wenn man Trunc()/Frac() verwendet.
Markus Kinzler
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Rechnen mit Zeiten zur Berechnung von Spesen

  Alt 14. Mär 2008, 15:12
Na, genau das mache ich auch. Ich hatte aber gehofft, es vermeiden zu können.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:34 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