zeit berechnen grösser als 24h

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

zeit berechnen grösser als 24h

Beitrag von slai »

Hallo zusammen

TTime kann ja soweit es mir ist nicht Zeiten über 24h richtig berechnen.
Ich stehe nun vor dem Problem das ich die Soll-Arbeitsstunden von 1nem Monat berechnen sollte.

Im Februar 2010 sind es z.B. hier 21 Arbeitstage 1 Arbeitstag dauert 8:48 h und der Arbeiter arbeitet 100%.

Formel im Excel währe nun (Auf einem Formatierten Feld "[h]:mm:ss")

((Stunden am Tag/100)*(Arbeitspensum))*(Arbeitstage im Monat)
((08:48/100)*(100))*(21) = 184:48:00 hhh:mm:ss

FPC syntax
ShowMessage(TimeToStr(((TTime('08:48:00')/100)*100)*21));

Das Problem ist ja nun das man das nicht mit TTime berechnen kann da TTime mir da 00:00 zurück gibt.

Hat das jemand hier schon einmal gemacht?
danke schon im voraus für antworten!!!
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

hendy
Beiträge: 80
Registriert: Sa 11. Apr 2009, 17:01
OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
CPU-Target: 32Bit

Re: zeit berechnen grösser als 24h

Beitrag von hendy »

Vielleicht mit TDateTime?
Das müsste dir dann tage zurückgeben due du nur mal 24 und zu den stunden hhinzuaddieren musst (Alle Angaben ohne Gewähr)
Dankt monta !!

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: zeit berechnen grösser als 24h

Beitrag von slai »

Nö das wird wohl nicht gehen da ich kein anfangs und enddatum habe sondern nur effektiv stunden ausrechnen möchte...
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: zeit berechnen grösser als 24h

Beitrag von mse »

slai hat geschrieben:FPC syntax
ShowMessage(TimeToStr(((TTime('08:48:00')/100)*100)*21));

Verwechselst du nicht TDateTime mit TTime aus baseunix? Zudem kann ein string nicht in ein TTime gecasted werden.
Also etwa so:

Code: Alles auswählen

ShowMessage(floattostr((((strtotime('08:48:00')/100)*100)*21)*24));

Oder besser:

Code: Alles auswählen

const
 h = 1/24;
 min = h/60;
 sec = min/60;
begin
 ShowMessage(floattostr((8*h+48*min)*(100/100)*21*24));
end;

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: zeit berechnen grösser als 24h

Beitrag von slai »

dank dir mse!

hatte da wohl einen der bekannten gehirnblockaden :-)
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Antworten