Hallo zusammen,
ich habe eigentlich kein schwere Frage aber komme da nicht weiter:
Ich habe zwei Uhrzeiten (Start und Endzeit von Sportlern bei einer Sportveranstaltung)
z.B. Start 09:00:00
Ende: 10:16:32
Diese Daten liegen als String vor (Import einer CSV über die Zeitnahme....., ist für das Problem egal)
Wie kann ich die Differenz berechnen?
Das Datum ist prinzipiell bei der Auswertung in meinem Fall egal.
Zeitdifferenz berechnen
-
- User
- Beiträge: 48
- Registriert: Montag 4. Januar 2016, 15:14
Hallo BlackJack,
das habe ich schon, ich werde da leider nur nicht ganz schlau draus.
Mein erster Ansatz war folgender:
Da bleibe ich dabei hängen das ich das Ergebnis (3600.0) nicht in Stunden, Minuten und Sekunden zurück umgewandelt bekomme....
Und das muss doch auch irgendwie schöner gehen als mit einem festen Datum.... Wie gesagt für meinen Fall brauche ich das Datum nicht da die Wettkämpfe nicht über Datumsgrenzen hinweg gehen.
das habe ich schon, ich werde da leider nur nicht ganz schlau draus.
Mein erster Ansatz war folgender:
Code: Alles auswählen
starttime = time.mktime((2016, 1, 4, 14, 38, 15, 0, 0, 0))
endtime = time.mktime((2016, 1, 4, 15, 38, 15, 0, 0, 0))
print (endtime - starttime)
Und das muss doch auch irgendwie schöner gehen als mit einem festen Datum.... Wie gesagt für meinen Fall brauche ich das Datum nicht da die Wettkämpfe nicht über Datumsgrenzen hinweg gehen.
@reneschmidt: Warum wirst Du da nicht schlau draus? Wo liegt das konkrete Problem?
Ohne konkretes Datum wird es nicht gehen weil vom Datum das Ergebnis abhängen kann! Denk mal an Schaltsekunden. Das reicht im Grunde noch nicht einmal, denn man braucht auch noch die Zeitzone wegen der Umstellung zwischen Sommer- und Winterzeit.
Wenn es wirklich ganz simple sein soll, dann kannst Du das natürlich auch einfach selbst alles ausrechnen. Die Stunden und Minuten in Minuten umrechnen, voneinander abziehen, und das Ergebnis dann wieder in Stunden und Minuten zurück rechnen. Das ist ein bisschen Division und Modulo. Praktischerweise gibt es auch eine Funktion die gleich beides ausrechnet: `divmod()`.
Ohne konkretes Datum wird es nicht gehen weil vom Datum das Ergebnis abhängen kann! Denk mal an Schaltsekunden. Das reicht im Grunde noch nicht einmal, denn man braucht auch noch die Zeitzone wegen der Umstellung zwischen Sommer- und Winterzeit.
Wenn es wirklich ganz simple sein soll, dann kannst Du das natürlich auch einfach selbst alles ausrechnen. Die Stunden und Minuten in Minuten umrechnen, voneinander abziehen, und das Ergebnis dann wieder in Stunden und Minuten zurück rechnen. Das ist ein bisschen Division und Modulo. Praktischerweise gibt es auch eine Funktion die gleich beides ausrechnet: `divmod()`.
Die Differenz bekommst du zum Beispiel so heraus:reneschmidt hat geschrieben:Ich habe zwei Uhrzeiten (Start und Endzeit von Sportlern bei einer Sportveranstaltung)
z.B. Start 09:00:00
Ende: 10:16:32
Diese Daten liegen als String vor (Import einer CSV über die Zeitnahme....., ist für das Problem egal)
Wie kann ich die Differenz berechnen?
Code: Alles auswählen
from datetime import timedelta
print(timedelta(hours=10, minutes=16, seconds=32) - timedelta(hours=9))
Wenn man selbst umrechnen möchte bzw muss:
Code: Alles auswählen
def get_hms(delta):
"""
Return hours, minutes and seconds as a 3-element tuple
for a given `timedelta`-object.
"""
h, m = divmod(delta.seconds, 3600)
m, s = divmod(m, 60)
return h, m, s