Eu tenho uma diferença horária
time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1
Agora, como encontro o número total de segundos que passaram? diff.seconds
não conta dias. Eu poderia fazer:
diff.seconds + diff.days * 24 * 3600
Existe um método interno para isso?
time1
ediff
no seu código. Para obter o tempo de utc atual como um objeto de data e hora ingênuo, use em seudatetime.utcnow()
lugar. Para entender por que você deve usar o UTC em vez da hora local para encontrar a diferença, consulte Localizar se 24 horas se passaram entre as datas - Python .time.monotonic()
pode ser preferível encontrar o tempo decorrido entre os eventos (em vez detime.time()
oudatetime.utcnow()
).Respostas:
Use
timedelta.total_seconds()
.fonte
Você tem um problema de uma maneira ou de outra com sua
datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
expressão.(1) Se tudo o que você precisa é a diferença entre dois instantes em segundos, o mais simples
time.time()
é o trabalho.(2) Se você estiver usando esses registros de data e hora para outros fins, precisará considerar o que está fazendo, porque o resultado tem um cheiro forte por todo o lado:
gmtime()
retorna uma tupla de hora no UTC, masmktime()
espera uma tupla de hora na hora local.Estou em Melbourne, na Austrália, onde o TZ padrão é UTC + 10, mas o horário de verão ainda está em vigor até amanhã de manhã, então é UTC + 11. Quando executei o seguinte, era 02-04-2011T20: 31, hora local aqui ... UTC era 2011-04-02T09: 31
Você notará que t3, o resultado da sua expressão é UTC + 1, que parece ser UTC + (minha diferença local no horário de verão) ... não muito significativo. Você deve considerar o uso
datetime.datetime.utcnow()
que não salta uma hora quando o horário de verão é ligado / desligado e pode fornecer mais precisão do quetime.time()
fonte
Você pode usar o módulo mx.DateTime
fonte