Diferența de timp în secunde (în virgulă mobilă) (Programare, Python, Datetime, Virgulă Mobilă)

pocoa a intrebat.
>>> from datetime import datetime
>>> t1 = datetime.now()
>>> t2 = datetime.now()
>>> delta = t2 - t1
>>> delta.seconds
7
>>> delta.microseconds
631000

Există vreo modalitate de a obține 7.631000 ? Pot folosi modulul de timp, dar am nevoie ca variabilele t1 și t2 să fie obiecte DateTime. Deci, dacă există o modalitate ușoară de a face acest lucru cu datettime, ar fi minunat. În caz contrar, va arăta urât:

t1 = datetime.now()
_t1 = time.time()
t2 = datetime.now()
diff = time.time() - _t1

3 răspunsuri
Edward Dale

combined = delta.seconds + delta.microseconds/1E6

Comentarii

  • sau combinat = delta.seconds + (float(1) / delta.microseconds) – (float(1) / delta.microseconds)  > Por pocoa.
  • @pocoa – aceasta este, de fapt, o conversie incorectă. 1/time este o rată (Hz) care chiar nu are sens aici. de asemenea, acest lucru oferă în mod clar un rezultat diferit de răspunsul acceptat pe care l-ați comentat. –  > Por underrun.
daniel kullmann

pentru o versiune mai nouă de Python (Python 2.7+ sau Python 3+), puteți utiliza, de asemenea, metoda total_seconds:

from datetime import datetime
t1 = datetime.now()
t2 = datetime.now()
delta = t2 - t1
print(delta.total_seconds())

Douglas Leeder

Nu știu dacă există o metodă mai bună, dar:

((1000000 * delta.seconds + delta.microseconds) / 1000000.0)

sau eventual:

"%d.%06d"%(delta.seconds,delta.microseconds)