Berechnung von Arbeitszeit

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Bisonte
Beiträge: 2471
Registriert: 01.04.2007 20:18

Berechnung von Arbeitszeit

Beitrag 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)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​