Seite 1 von 1

Berechnung von Arbeitszeit

Verfasst: 24.10.2013 11:41
von Bisonte
Hallo.

Hier eine simple Prozedur zur Errechnung von Arbeitszeit.
Man übergibt das StartDatum und StopDatum im PB Date Format und die Pausenzeit in Minuten.

Sollte das Ergebnis im Minusbereich sein, gibt die Prozedur eine 0 zurück.
Ansonsten eine effektive Arbeitszeit in Industriezeit Format. (Bsp.: 45 Min. wären 0,75),
jeder der mal Stundenzettel ausgefüllt hat wird das kennen ;)

Das Ergebnis wird übrigens nicht gerundet. Die Formel zur Industrieminute kommt von : http://de.wikipedia.org/wiki/Industrieminute

Lange Rede kurzer Code :

Code: Alles auswählen

Procedure.f ArbeitsZeit(StartDatum, StopDatum, PausenMinuten = 0) ; Berechnet Arbeitszeit in IndustrieZeit
    
  Protected Std, Min, Sek, Effektiv, Result.f = 0
  
  Effektiv = StopDatum - AddDate(StartDatum, #PB_Date_Minute, PausenMinuten)
  If Effektiv > 0
    Min = Effektiv / 60 : Sek = Effektiv % 60 : Std = Min / 60 : Min = Min % 60
    Result = Std + Min/60 + Sek/3600
  EndIf
  
  ProcedureReturn Result
  
EndProcedure

; --- Beispiel

Start = Date(2013, 10, 24, 7, 0, 0) ; Arbeitsbeginn 24.10.2013 um 7:00 Uhr
Stop  = Date(2013, 10, 24, 16, 30, 0) ; Arbeitsende 24.10.2013 um 16:30 Uhr
Pause = 45 ; Insgesamt 45 Minuten Pause

Debug ArbeitsZeit(Start, Stop, Pause)