Ich unterstelle Du verwendest TDateTime (Datumstyp in Delphi) und die
unit DateUtils.
Delphi-Quellcode:
Dauer:= 19,67 //...
Enddatum:= IncDay(Startdatum, trunc(Dauer)); // startdatum um die anzahl der tage erhöhen
Enddatum:= Enddatum + frac(dauer); // startdatum um die verbleibenden stunden erhöhen
fertig.
Allerdings solltest Du auch arbeitsfreie Tage berücksichtigen (Sonntag od. Feiertag), d.h. entsprechende Tage dazuaddieren mit IncDay.
Wenn du einfach so am Ende die Stunden dazuzählst, dann kommst du niemals auf das richtige Ergebnis.
(und so sowieso nicht
)
Deine Endzeit wäre 16:04:48 (0,67 Tage)
Richtig ist aber:
Code:
300h / 15,25h/Arbeitstag = 19,67 Arbeitstage => 19 ganze Arbeitstage
Rest-Stunden => 0,67 Arbeitstage * 15,25h/Arbeitstag = 10,2175h => 10:13:03
Aber es wird ja nicht rund um die Uhr gearbeitet.
Somit kann die Arbeit erst im Block 5 abgeschlossen werden
Code:
10,2175h - ( 3,50h (1.) + 2,25h (2.) + 1,75h (3.) + 2,00h (4.) ) = 0,7175h im 5. Block => 17:28:03
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)