Seite 1 von 1
zwei Uhrzeiten subtrahieren
Verfasst: Dienstag 2. Januar 2018, 21:04
von chris74
Hallo zusammen,
Ich möchte zwei Uhrzeiten subtrahieren siehe code unten dabei bekomme ich immer folgende Fehlermeldung:
TypeError:unsupported operand type for -: datetime.time and datetime.time
Ich programmiere noch nicht lange python und habe keine Idee wie ich das problem lösen kann.
Kann mir jemand sagen was ich für ein Fehler mache und wie es funktioniert.
Danke im Voraus für eure Antworten
[import datetime
if Zeitmessung == 0:
start_time = datetime.datetime.time(datetime.datetime.utcnow())
print (start_time)
Zeitmessung = 1
if laps == 0 and Zeitmessung == 1:
end_time = datetime.datetime.time(datetime.datetime.utcnow())
print (end_time)
Zeitmessung = 0
div_time =(end_time) - (start_time)
print(div_time)]
Re: zwei Uhrzeiten subtrahieren
Verfasst: Dienstag 2. Januar 2018, 22:40
von __deets__
Die Unterscheidung ist subtil, aber du musst datetime.datetime nehmen. Nur das sind Zeitpunkte. Zwei Tageszeiten (time) mag er nicht subtrahieren, weil man sich da alle 24h wiederholt.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Mittwoch 3. Januar 2018, 17:28
von Sirius3
@chris74: ... und Differenz schreibt man mit f und nicht mit v. Statt einer zusätzlichen Variable, würde ich start_time auf None prüfen, falls der erste Zeitpunkt noch nicht ermittelt wurde:
Code: Alles auswählen
import datetime
start_time = None
[...]
if start_time is None:
start_time = datetime.datetime.utcnow()
print(start_time)
elif laps == 0:
end_time = datetime.datetime.utcnow()
print(end_time)
difference_time =end_time - start_time
print(difference_time)
start_time = None
Re: zwei Uhrzeiten subtrahieren
Verfasst: Freitag 5. Januar 2018, 22:06
von chris74
Hallo Sirius3,
Hallo __deets__,
erstmal Danke für eure infos zu meinem Problem, aber nun bekomme ich folgende Fehlermeldung:
an integer is required (for type datetime.datetime)
Habt ihr noch einen Tipp ?
Re: zwei Uhrzeiten subtrahieren
Verfasst: Freitag 5. Januar 2018, 23:09
von __deets__
zeig bitten den konkreten Code.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Samstag 6. Januar 2018, 19:57
von chris74
Hallo,
so funktioniert es nicht:
start_time = datetime.datetime(datetime.datetime.utcnow())
so geht es
start_time = datetime.datetime.utcnow()
Mir ist zwar der Unterschied nicht ganz klar, aber es geht ja jetzt.
Danke für eure Hilfe.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Samstag 6. Januar 2018, 20:01
von __deets__
utcnow() liefert dir schon ein fertiges datetime objekt, das nochmal in einen Konstruktor zu stopfen ist sinnlos.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Sonntag 7. Januar 2018, 21:25
von chris74
Hallo,
gibt es jetzt noch die Möglichkeit nur die Zeit anzuzeigen ?
Danke für eure Infos.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Sonntag 7. Januar 2018, 21:35
von __deets__
Hast du mal in die Dokumentation des datetime Moduls geschaut? Das beantwortet diese und viele andere Fragen.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Sonntag 7. Januar 2018, 21:42
von Sirius3
@chris74: man kann mit Stringformatierung genau angeben, was man wie ausgeben will.
Re: zwei Uhrzeiten subtrahieren
Verfasst: Dienstag 9. Januar 2018, 20:55
von chris74
Hallo zusammen,
Ich habe die Doku von dem datetime Modul gelesen aber keine funktionierende Lösung gefunden.
wenn ich z.B. folgendes teste
start_time = datetime.datetime.utcnow()
end_time = datetime.datetime.utcnow()
div_time =(end_time) - (start_time)
d_time = div_time.strftime('%H:%M:%S')
print(d_time)
bekomme ich folgende Fehlermeldung: datetime.timedelta object has no attribute strftime
Es kann doch nicht so schwer sein nur die Uhrzeit anzuzeigen.
Ich stehe leider voll auf dem Schlauch. Kann mir jemand mal ein Bespiel machen wie es gehen könnte.
Mit Kommentaren wie lies die Doku komme ich nicht weiter.
Danke
Re: zwei Uhrzeiten subtrahieren
Verfasst: Dienstag 9. Januar 2018, 21:15
von __deets__
Du hast ja auch kein datetime Objekt. Sondern ein timedelta Objekt. Das hat keine strftime Methode, weil das da sinnlos ist. Du kannst dieses Objekt aber nach der Anzahl der verflossenen Anzahl von Tagen, Sekunden und Microsekunden fragen. Oder zb der total_seconds. Und daraus errechnen, was du brauchst.