Zeitdifferenz 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
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

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.
BlackJack

@reneschmidt: Schau Dir mal das `datetime`-Modul aus der Standardbibliothek an.
reneschmidt
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:

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)
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.
BlackJack

@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()`.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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?
Die Differenz bekommst du zum Beispiel so heraus:

Code: Alles auswählen

from datetime import timedelta
print(timedelta(hours=10, minutes=16, seconds=32) - timedelta(hours=9))
Abgesehen von der Variante mit `print()` (bzw intern `__str__()`) lassen sich nur die Tage, Sekunden und Mikrosekunden von einmal erstellten `timedelta`-Objekten abfragen. Das steht übrigens auch so in der Doku, auf die BlackJack bereits verwiesen hat.

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
Antworten