Python funktion för tidsberäkning
Postat: 15 mar 2013, 23:33
Hej
Jag sitter och donar med ett tidsrapporteringsprogram för att räkna ut lön och ob tider, traktamenten mm som jag sedan ska kunna exportera till en excel fil för att skicka till lönekontoret.
Men jag har fastnat i algoritmen för att kunna avgöra och lägga till OB tider och hur många timmar det blir. Denna funktion ska också räkna ut om jag har haft rast under denna tid och räkna bort rasten ifrån OB timmarna.
Jag har börjat med enkel if sats för att lösa det men jag känner att det räcker inte till, men jag har grunnat i för många dagar utan att se någon smart början, så frågar här om någon har en smart ide hur jag ska göra...
Jag sitter och donar med ett tidsrapporteringsprogram för att räkna ut lön och ob tider, traktamenten mm som jag sedan ska kunna exportera till en excel fil för att skicka till lönekontoret.
Men jag har fastnat i algoritmen för att kunna avgöra och lägga till OB tider och hur många timmar det blir. Denna funktion ska också räkna ut om jag har haft rast under denna tid och räkna bort rasten ifrån OB timmarna.
Jag har börjat med enkel if sats för att lösa det men jag känner att det räcker inte till, men jag har grunnat i för många dagar utan att se någon smart början, så frågar här om någon har en smart ide hur jag ska göra...
Kod: Markera allt
# OB tider vardagar 18:00 till 06:00, helg från fredag 18:00 till måndag 06:00
weekDay = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8])).isoweekday()
if weekDay >= 1 and weekDay <=7:
if weekDay >= 5 and weekDay <= 7:
workData.append('Nej')
if int(tStart[:2]) <= 18 and weekDay == 5:
a = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8]), 18, 0)
b = datetime(int(dStopp[:4]), int(dStopp[4:6]), int(dStopp[6:8]), int(tStopp[:2]), int(tStopp[2:5]))
obHelg = b - a
workdata.append(str(obHelg))
elif int(tStart[:2]) >= 18 and weekDay >= 5 or weekday <= 7:
a = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8]), int(tStart[:2]), int(tStart[2:5]))
b = datetime(int(dStopp[:4]), int(dStopp[4:6]), int(dStopp[6:8]), int(tStopp[:2]), int(tStopp[2:5]))
obHelg = b - a
workdata.append(str(obHelg))
else:
if int(tStart[:2]) in range(6, 18):
if int(tStart[:2]) in range(0, 6):# Hanterar om startiden är tidigare än 06:00
a = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8]), int(tStart[:2]), int(tStart[2:5]))
b = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8]), 6, 0)
obVardag = a - b
if int(tStopp[:2]) in range(18, 24) or int(tStopp[:2]) in range(0, 6):
a = datetime(int(dStart[:4]), int(dStart[4:6]), int(dStart[6:8]), int(tStart[:2]), int(tStart[2:5]))
b = datetime(int(dStopp[:4]), int(dStopp[4:6]), int(dStopp[6:8]), int(tStopp[:2]), int(tStopp[2:5]))
obVardag = obVardag + (b - a)
workdata.append(str(obVardag))
else: