Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Anzahl Stunden berechnen (https://www.delphipraxis.net/138965-anzahl-stunden-berechnen.html)

weeweewee 20. Aug 2009 17:56


Anzahl Stunden berechnen
 
Hallo Zusammen,

habe folgendes Problem: (Delphi 2009/Win32)

Ich möchte die Anzahl der Stunden und Minuten innerhalb einer Zeitspanne errechnen.

Beispiel:

Arbeitszeit:

16:30 - 03:30 Uhr

Zwischen 20:00 und 06:00 gibt es Zuschläge; Wieviele Stunden und Minuten liegen in dem Bereich?
(in diesem Fall 7,5 (Industrie)Std.)
Ich kann sicherlich mit jeder Menge If..Then zur Lösung kommen - geht es vielleicht einfacher?

mkinzler 20. Aug 2009 18:04

Re: Anzahl Stunden berechnen
 
Schau dir mal die Unit Dateutils an

SirTwist 21. Aug 2009 10:13

Re: Anzahl Stunden berechnen
 
Hi,

Du könntest ein Array[0..1439] of Integer machen und in jedes Feld eintragen, mit welchem Faktor die jeweilige Tagesminute zu bewerten ist. Wahlweise auch für eine ganze Woche, dann ist es ein Array[0..10079]. Geschickterweise baust Du Dir noch eine Zugriffsfunktion, in der Du nicht die Minute angibst, sondern Wochentag, Stunde, Minute oder halt TDateTime.

Ja, das klingt aufwändig, aber zum einen sind das grad 20-40 kByte und du musst sie nur einmal füllen. Danach ratterst Du in einer for-Schleife vom Startzeitpunkt bis zum Endzeitpunkt über jede Minute hinweg und addierst die Bewertungen auf.

Achtung: für eine Zeiterfassung hat sich (bei mir!) TTime bzw. TDateTime als sehr fehleranfällig herausgestellt. Ich speichere das Datum als TDate und die Start- und Stoppzeiten getrennt als Integerwert, also genau von 0 (als 00:00) bis 1439 (als 23:59).

Viel Spaß!

Kruemel_02 21. Aug 2009 10:34

Re: Anzahl Stunden berechnen
 
Zeitdifferenz in Minuten berechnen

8)

TeronG 21. Aug 2009 10:41

Re: Anzahl Stunden berechnen
 
Zitat:

Zitat von SirTwist
Achtung: für eine Zeiterfassung hat sich (bei mir!) TTime bzw. TDateTime als sehr fehleranfällig herausgestellt.

Jo ... Das Dateformat kann tricky sein -.-"
a) TTime = TDate = TDateTime = Double
b) Wenn Sie mit Gleitkommazahlen arbeiten, sollten Sie beachten, dass sie im Arbeitsspeicher nicht immer präzise dargestellt werden... (+ Rechenfehler & Ungenauigkeiten beim multiplizieren und teilen)

Zitat:

... Array[0..1439] ... ganze Woche, dann ist es ein Array[0..10079] ...
Wenn schon so n Array. Währe es dann nicht einfacher bzw. leichter zu handeln/verstehen ein array[0..6] of TagesArray zu machen? (oder auch 1..7 je nach Geschmack ^^)
So sehe ich gleich Tag,Minute und muss nicht den Tag aus der Minute heraus errechnen (div 1440)... naja aber das kommt wohl auf die Restliche Vorgehensweise drauf an ^^

SirTwist 21. Aug 2009 10:57

Re: Anzahl Stunden berechnen
 
Zitat:

Zitat von TeronG
Zitat:

... Array[0..1439] ... ganze Woche, dann ist es ein Array[0..10079] ...
Wenn schon so n Array. Währe es dann nicht einfacher bzw. leichter zu handeln/verstehen ein array[0..6] of TagesArray zu machen? (oder auch 1..7 je nach Geschmack ^^)
So sehe ich gleich Tag,Minute und muss nicht den Tag aus der Minute heraus errechnen (div 1440)... naja aber das kommt wohl auf die Restliche Vorgehensweise drauf an ^^

Das war nur zur Verdeutlichung. ICH würde das kapseln und Zugriffsfunktionen bauen, die als Parameter die Formate akzeptieren, die in der restlichen Anwendung auch benutzt werden. Dann ist die interne Darstellung erstmal egal. Aber die Implementierungsdetails sind natürlich jedem selbst überlassen ;)


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