Zeiträume/ Zeiperioden mit Python berechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kohonick
User
Beiträge: 7
Registriert: Sonntag 27. Oktober 2013, 17:52
Wohnort: Düsseldorf

Hallo Community,

ich hoffe Ihr könnt mich ein bisschen auf den richtigen Wege bringen für mein Projekt.

Ich möchte gerne Zeiträume mit Python berechnen können.

Hier ein Beispiel:

Dienstbeginn: 01.01.2015 - 08:00 Uhr
Dienstende: 01.01.2015 - 16:00 Uhr

Nun muss der komplette Tag, also mit 24 Stunden betrachtet werden. Ziel ist es die Fehlzeiten/ Abwesenheiten des Mitarbeiters zu ermitteln.

Hier die Abwesenheiten/ Fehlzeiten am obigen Beispiel:

Abwesenheit_1_Beginn : 01.01.2015 00:00 Uhr
Abwesenheit_1_Ende : 01.01.2015 08:00 Uhr
Abwesenheit_2_Beginn : 01.01.2015 16:00 Uhr
Abwesenheit_2_Ende : 01.01.2015 24:00 Uhr

Im Zweiten Schritt könnte ein zweite Anwesenheit mit in die Rechnung fallen. Beispielsweise ein weiterer Dienst von 18:00 Uhr - 23:00 Uhr.
Daraus Resultiert natürlich eine kürzung der Abwesenheit 2 und es wird eine Abwesenheit 3 von 23:00 Uhr bis 24:00 Uhr erzeugt.

Ich hoffe ich habe alles verständlich formuliert.
Habt Ihr ein paar Tipps für mich wie man solche Rechnungen angeht? Gibt es eventuell ein paar nette Libs?
Auch auf Vorschläge für einen eigenen Algorithmus würde ich mich freuen.

Vielen Dank im Voraus

JR
~Choose a job you love and you will never work a day in your live!~
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das hört sich nach einer Aufgabe für das datetime-Modul an. Darin enthalten sind die datetime- und timedelta-Klassen, die sind für deine Zwecke besonders hilfreich.
Das Leben ist wie ein Tennisball.
bfm
User
Beiträge: 88
Registriert: Donnerstag 14. März 2013, 09:42

Hallo,

wie mein Vorschreiber erwähnt hat, bietet sich hier das datetime-Modul an. Mit datetime-Objekten lassen sich ganz gut Zeitdifferenzen berechnen. Auch kann man damit sehr gut größer/kleiner Vergleiche von zwei Zeitpunkten anstellen.

Ich verwende das Modul bei uns in der Firma, wenn ich die BDE-Zeiten (Betriebsdatenerfassung) mit der Zeitwirtschaft auf Vollständigkeit prüfe. Das Modul erspart einem einiges an selbstgeschriebenen Code und Programmierzeit.

mfg
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

ich hatte da mal was gebastelt, vielleicht findest Du ja die eine oder andere Inspiration...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@mutetella: solche Kunstrukte

Code: Alles auswählen

new_begin = other.begin if other.begin >= begin else begin
lassen sich einfach durch die max-Funktion

Code: Alles auswählen

new_begin = max(other.begin, begin)
ersetzen.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Sirius3
Danke, sehr schön! Hab's geändert!

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten