ti-enxame.com

encontre a diferença de tempo em segundos como um número inteiro com python

Eu preciso encontrar a diferença de tempo em segundos com python. Eu sei que posso ter a diferença assim:

from datetime import datetime
now = datetime.now()
....
....
....
later = datetime.now()
difference = later-now

como obtenho diferença no total de segundos?

27
Richard
import time
now = time.time()
...
later = time.time()
difference = int(later - now)
25
Michael Mior

O método total_seconds retornará a diferença, incluindo qualquer parte fracionária.

from datetime import datetime
now = datetime.now()
...
later = datetime.now()
difference = (later - now).total_seconds()

Você pode convertê-lo em um número inteiro via int () se desejar

11
Robert Longson

Adicionar os termos da tupla timedelta com multiplicadores adequados deve fornecer sua resposta. 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

A variável 'diff' é um objeto timedelta com uma Tupla de (dias, segundos, microssegundos), conforme explicado em detalhes aqui https://docs.python.org/2.4/lib/datetime-timedelta.html . Todas as outras unidades (horas, minutos ...) são convertidas para este formato.

>> diff = later- now
>> diff
datetime.timedelta(0, 8526, 689000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> 8527

Outra maneira de analisar isso seria se, em vez de agora mais tarde (portanto, uma diferença horária positiva), você tivesse uma diferença horária negativa (agora mais cedo), em que o tempo decorrido entre os dois ainda seja o mesmo do anterior exemplo

>> diff = earlier-now
>> diff
datetime.timedelta(-1, 77873, 311000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> -8527

Portanto, mesmo se tivermos certeza de que a duração é inferior a 1 dia, é necessário levar em consideração o período do dia, pois é um termo importante em caso de diferença horária negativa.

5
Jiaconda

Se tudo que você precisa é medir um intervalo de tempo, você pode usar a função time.time() que retorna segundos desde a época como um número de ponto flutuante.

2
rkhayrov