sumowaniu względem krotki timedelta z odpowiednich mnożników powinny dać odpowiedź. diff.days*24*60*60 + difference.seconds
from datetime import datetime
now = datetime.now()
...
later = datetime.now()
diff = later-now
diff_in_seconds = diff.days*24*60*60 + diff.seconds
Zmienna „edycja” jest obiektem timedelta który jest krotką (dni, sekundy mikrosekund), jak wyjaśniono szczegółowo https://docs.python.org/2.4/lib/datetime-timedelta.html. Wszystkie pozostałe jednostki (godziny, minuty ..) są konwertowane na ten format.
>> diff = later- now
>> diff
datetime.timedelta(0, 8526, 689000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> 8527
Innym sposobem, aby spojrzeć na byłoby, gdyby zamiast później-teraz (zatem dodatnia różnica czasu), to zamiast mieć negatywny różnicy czasu (wcześniej-teraz), gdzie czas, jaki upłynął między nimi jest nadal takie same jak we wcześniejszym przykładzie
>> diff = earlier-now
>> diff
datetime.timedelta(-1, 77873, 311000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> -8527
Stąd, nawet jeśli jesteśmy pewni, że czas trwania jest krótszy niż 1 dzień, to jest konieczne do podjęcia termin dzień pod uwagę, ponieważ jest to ważny termin w przypadku ujemna różnica czasu.
Daje to argument "TypeError: int() musi być łańcuchem, obiektem podobnym do bajtów lub liczbą, a nie błędem" datetime.timedelta "" w Pythonie3. Zobacz odpowiedź Roberta Longsona. – typoerrpr