Ich habe zwei datetime.time
Werte exit
und enter
möchte etwas tun wie:
duration = exit - enter
Ich erhalte jedoch diesen Fehler:
TypeError: Nicht unterstützte Operandentypen für -: 'datetime.time' und 'datetime.time
Wie mache ich das richtig? Eine mögliche Lösung besteht darin, die time
Variablen in datetime
Variablen umzuwandeln und dann zu subtruieren, aber ich bin sicher, dass Sie einen besseren und saubereren Weg haben müssen.
datetime(1,1,1,0,0,0)
anstelle von verwendendate.today()
.datetime
exit
, da diesexit
eine integrierte Funktion ist.combine
Methode in meinemdatetime
Modul:AttributeError: 'module' object has no attribute 'combine'
datetime
Modul und es enthält eindatetime
Objekt. Das Objekt im Inneren hat einecombine
Methode. Wenn Sie einfach importierendatetime
(wieimport datetime
folgt :), müssen Sie dies später tundatetime.datetime.combine
.date.today()
Vorher und dasdate.today()
Spätere einen anderen Wert zurück. Es wäre besser, den Wertdate.today()
einer Variablen zu geben .Verwenden:
Die Verwendung
date.min
ist etwas prägnanter und funktioniert sogar um Mitternacht.Dies ist möglicherweise nicht der Fall
date.today()
, da dies zu unerwarteten Ergebnissen führen kann, wenn der erste Anruf um 23:59:59 Uhr und der nächste um 00:00:00 Uhr erfolgt.quelle
Anstatt Zeit zu verwenden, versuchen Sie es mit timedelta:
quelle
datetime.time
unterstützt dies nicht, da es nahezu bedeutungslos ist, Zeiten auf diese Weise zu subtrahieren. Verwenden Sie eine vollständige,datetime.datetime
wenn Sie dies tun möchten.quelle
datetime.time
Objektea
undb
sind aus dem gleichen Tag, und dasb > a
, dann geht der Vorgangb - a
hat eine perfekte Bedeutung.arctan(0) = (0, pi, 2pi, ...)
, aber wir kümmern uns einfach nicht um einen dieser Werte nach dem ersten. So4:00 - 20:00
ist8:00
- es ist auch (32:00
,56:00
, ...), aber wen stört das schon?Die Python- Timedelta- Bibliothek sollte das tun, was Sie brauchen. A
timedelta
wird zurückgegeben, wenn Sie zweidatetime
Instanzen subtrahieren .quelle
Sie haben zwei datetime.time-Objekte, sodass Sie mit datetime.timedetla nur zwei timedelta erstellen und dann wie jetzt mit dem Operanden "-" subtrahieren. Im Folgenden finden Sie ein Beispiel für die zweimalige Subtraktion ohne Verwendung von datetime.
different_delta ist Ihr Unterschied, den Sie aus Ihren Gründen verwenden können.
quelle
datetime.min + delta
quelle
datetime.time
kann es nicht - aber du könntest es benutzendatetime.datetime.now()
quelle
Ich hatte eine ähnliche Situation wie Sie und habe am Ende eine externe Bibliothek namens Pfeil verwendet .
So sieht es aus:
quelle