Como faço para saber a diferença horária em minutos entre dois datetime
objetos?
python
datetime
date-arithmetic
Hobhouse
fonte
fonte
delorean
deturpadatetime
,pytz
abordagem , por exemplo, o exemplo de código inicial pode ser escrito comod = datetime.now(timezone(EST))
(uma linha legível em vez de cinco).Novo no Python 2.7 é o
timedelta
método de instância.total_seconds()
. Nos documentos do Python, isso é equivalente a(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.Referência: http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
fonte
elapsedTime / timedelta(minutes=1)
para obter a diferença em minutos no Python 3Usando exemplo datetime
Duração em anos
Duração em dias
Duração em horas
Duração em minutos
Duração em segundos
Duração em microssegundos
Duração total entre as duas datas
ou simplesmente:
Editar 2019 Como essa resposta ganhou força, adicionarei uma função que pode simplificar o uso de alguns
fonte
TypeError: 'float' object is not subscriptable
ao usar:then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Apenas subtraia um do outro. Você recebe um
timedelta
objeto com a diferença.Você pode converter
dd.days
,dd.seconds
edd.microseconds
para minutos.fonte
Se
a
,b
são objetos de data e hora, para encontrar a diferença de horário entre eles no Python 3:Nas versões anteriores do Python:
Se
a
,b
são objetos de data e hora ingênuos, como retornados pordatetime.now()
então o resultado pode estar errado se os objetos representam hora local com diferentes UTC compensações por exemplo, transições em torno do horário de verão ou para últimos datas / futuras. Mais detalhes: descubra se 24 horas se passaram entre as datas - Python .Para obter resultados confiáveis, use a hora UTC ou os objetos de data e hora com reconhecimento de fuso horário.
fonte
Use divmod:
fonte
É assim que obtenho o número de horas decorridas entre dois objetos datetime.datetime:
fonte
timedelta.seconds
fornece apenas o número de segundos armazenados explicitamente - que a documentação garante que totalizará menos de um dia. Você deseja(after - before).total_seconds()
, que fornece o número de segundos que abrangem todo o delta.(after - before).total_seconds() // 3600
(Python 2.7) ou(after - before) // timedelta(seconds=3600)
(Python 3)Para encontrar apenas o número de dias: timedelta possui um atributo 'days'. Você pode simplesmente consultar isso.
fonte
Apenas pensei que poderia ser útil mencionar a formatação também em relação ao timedelta. strptime () analisa uma string que representa uma hora de acordo com um formato.
Isso produzirá: 0: 05: 00.518000
fonte
Eu uso algo assim:
fonte
return t1-t2
é encontrar a diferença entre a hora atual e as 9h30.
fonte
Esta é a minha abordagem usando mktime .
fonte
mktime()
espera a hora local como uma entrada. A hora local pode ser ambígua e,mktime()
nesse caso, pode retornar uma resposta errada. Use ema - b
vez disso (a, b - objetos datetime) .mktime()
é desnecessário e às vezes está errado. Não use neste caso.De outras maneiras para obter diferença entre data;
Portanto, obtenha saída em min.
obrigado
fonte
Eu usei diferenças de tempo para testes de integração contínua para verificar e melhorar minhas funções. Aqui está um código simples, se alguém precisar
Usando:
e eu tenho algo parecido na saída do log
fonte
Com base na ótima resposta do @Attaque , proponho uma versão simplificada mais curta da calculadora de diferença de data e hora:
Eu mudei para evitar declarar funções repetitivas, removi o bonito intervalo padrão de impressão e adicionei suporte para milissegundos, semanas e meses ISO (os meses em mente são apenas aproximados, com base na suposição de que cada mês é igual a
365/12
).Qual produz:
fonte